AmShZ's blog

By AmShZ, 8 days ago, In English

Hello everyone!

We are back with another Premier round!

Get ready for Repovive Premier Round 8, featuring another set of challenging algorithmic problems.

Please note that this contest starts at an unusual time. Make sure to check the start time carefully.

Premier rounds are currently the highest level among our contest series. We hope you enjoy it!

The contest is rated for everyone.

Prizes

The top participants will receive:

  • 1st place: $100
  • 2nd place: $60
  • 3rd place: $40

Additionally, 5 participants from the top 100 will each receive $20.

See you on the leaderboard!

UPD1: Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +93
  • Vote: I do not like it

By AmShZ, 2 weeks ago, In English

Hello everyone!

The next Starter round is here.

Repovive Starter Round 8 will be held this Sunday.

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC.

Please note that the start time of this contest is unusual, so make sure to check it carefully.

The contest is rated for participants with rating below $$$1700$$$, whose role is at most Sushi Roll. It is unrated for Steaks.

See you on the leaderboard!

Full text and comments »

  • Vote: I like it
  • +82
  • Vote: I do not like it

By AmShZ, 3 weeks ago, In English

Hello everyone!

The next Standard round is here.

Repovive Standard Round 7 will be held this Sunday.

Standard rounds are intended to be close to Codeforces Div.2 level. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

Full text and comments »

  • Vote: I like it
  • +82
  • Vote: I do not like it

By AmShZ, 4 weeks ago, In English

In recent years, IOI tasks have taken a different direction. Communication, interactive, and constructive tasks have become much more common. In some of these tasks, there is no fixed optimal answer to the problem. Instead, contestants receive points depending on how small or large a certain value is.

In this blog, I want to criticize this style of task from a few different angles and express my concern that it is starting to appear too often at IOI.

My first point is about the ideas behind the solutions.

I think the solutions to these tasks can be extremely creative, and this is certainly a good thing. There may be no clear or standard path toward solving the problem. Each contestant can come up with their own idea, implement it, and possibly receive a good score. This freedom can make such tasks very interesting.

However, I often feel that these solutions do not have enough depth.

You may try a somewhat random idea and suddenly receive a very good score. Or you may start with an ordinary solution, make a small modification that improves the answer by a factor of two, and immediately gain many more points. Constant-factor improvements can play a surprisingly large role.

Because of this, these tasks sometimes start to feel more like heuristic contests. Personally, I do not think this is a good direction for OI contests.

My second criticism is about subtasks and score distribution.

In many of these problems, your score depends on how much you manage to optimize your solution. The lack of depth I mentioned above becomes even more important here. Dividing some bound by two, or even making an $$$O(1)$$$ change to the code, may suddenly give you several dozen additional points.

Sometimes the subtasks almost seem to say: do more tedious work and receive more points.

In a standard batch problem, each subtask usually represents a meaningful special case of the original problem. By solving it, you may discover an important part of the structure or get closer to the main observation. Each subtask has its own intended meaning, and the progression toward the full solution feels more natural and reliable.

I am not against the existence of communication tasks. Some of them have very beautiful and creative ideas, and having an occasional task of this kind adds variety to the contest.

My concern is simply that they are being used too often.

At least from what I see, students are becoming less interested in sitting with a problem and thinking deeply until they discover its complete structure. Instead, they look for another small optimization and another few points. I feel that the old problem-solving mindset is slowly becoming less visible, and I miss it.

I would be interested to hear what others think. Do you also feel that IOI is using too many tasks of this style, or do you think this is a good direction for the competition?

Full text and comments »

  • Vote: I like it
  • +484
  • Vote: I do not like it

By AmShZ, 4 weeks ago, In English

Hello everyone!

The next Starter round is here.

Repovive Starter Round 7 will be held this Sunday.

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC.

The contest is rated for participants with rating below $$$1700$$$, whose role is at most Sushi Roll. It is unrated for Steaks.

See you on the leaderboard!

Full text and comments »

  • Vote: I like it
  • +65
  • Vote: I do not like it

By AmShZ, 5 weeks ago, In English

Hello everyone!

We are back with another Premier round!

Repovive Premier Round 7 will be held this Sunday.

Premier rounds are currently the highest level among our contest series. We hope you enjoy it!

The contest is rated for everyone.

Prizes

The top participants will receive:

  • 1st place: $100
  • 2nd place: $60
  • 3rd place: $40

Additionally, 5 participants from the top 100 will each receive $20.

See you on the leaderboard!

UPD1: Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +123
  • Vote: I do not like it

By AmShZ, 2 months ago, In English

Hello everyone!

The next Starter round is here.

Repovive Starter Round 6 will be held this Sunday.

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC.

The contest is rated for participants with rating below $$$1700$$$, whose role is at most Sushi Roll. It is unrated for Steaks.

See you on the leaderboard!

UPD1: Congratulations to the top participants:

The Codeforces handles of the top 10 participants:

Full text and comments »

  • Vote: I like it
  • +12
  • Vote: I do not like it

By AmShZ, 2 months ago, In English

Hello everyone!

The next Standard round is here.

Repovive Standard Round 6 will be held this Monday.

Standard rounds are intended to be close to Codeforces Div.2 level. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

UPD1: The contest has been postponed by one day and will now be held on Monday at the same time.

UPD2: Congratulations to the top participants:

The Codeforces handles of the top 10 participants:

Full text and comments »

  • Vote: I like it
  • +22
  • Vote: I do not like it

By AmShZ, 2 months ago, In English

Hello everyone!

The next Starter round is here.

Repovive Starter Round 5 will be held this Sunday.

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC.

The contest is rated for participants with rating below 1700, whose role is at most Sushi Roll. It is unrated for Steaks.

See you on the leaderboard!

UPD1: Congratulations to the top participants:

The Codeforces handles of the top 10 participants:

Those of you who tested the contest: manya.verma21

Full text and comments »

  • Vote: I like it
  • +49
  • Vote: I do not like it

By AmShZ, 3 months ago, In English

Hello everyone!

We are back with another Premier round!

Repovive Premier Round 6 will be held this Saturday.

Premier rounds are currently the highest level among our contest series. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

UPD1: We are sorry for the issues during the contest.

The website was down for around $$$5$$$ to $$$10$$$ minutes. Also, in Problem E, we forgot to mention the constraint on the sum of $$$k$$$ over test cases. We apologize for these problems.

You can now view the solutions in the Learn tab.

Congratulations to the top participants:

We would also like to thank AmiraliRafiei, Thrb_73, and jigyasu_kalyan for testing the round.

Full text and comments »

  • Vote: I like it
  • +52
  • Vote: I do not like it

By AmShZ, 3 months ago, In English

Hello everyone!

We are starting a new series on Repovive: Weekly Challenges.

In each weekly challenge, we will release problems for 7 consecutive days. After each problem is released, you will have 24 hours to get it accepted. Penalty does not matter.

There will be a live ranking throughout the challenge. The goal of these challenges is both competition and learning, so try not to miss any day!

Next week, from Monday to Sunday, the topic will be Approximation.

For Week 1, we will release two independent problems each day: one Easy problem and one Hard problem. These two problems are separate tasks, so the Hard problem is not necessarily a harder version of the Easy problem.

In this style of problems, we usually have an optimization problem, but you do not need to find the optimal answer. It is enough to construct a solution with a guaranteed approximation factor specified in the statement. In many cases, finding the exact optimum is either not accepted or much harder than what is expected.

The problems this week are not intended to be extremely difficult. The main goal is to introduce this interesting style of problems and make it more familiar to participants.

If the reception is good, we will continue this type of challenge in the future.

We hope you enjoy the challenge!

Full text and comments »

  • Vote: I like it
  • +26
  • Vote: I do not like it

By AmShZ, 3 months ago, In English

Hello everyone!

The next Starter round is here.

Repovive Starter Round 4 will be held this Sunday.

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC.

The contest is rated for participants with rating below $$$1700$$$, whose role is at most Sushi Roll. It is unrated for Steaks.

See you on the leaderboard!

UPD1: Congratulations to the top participants:

The Codeforces handles of the top 10 participants:

Those of you who tested the contest in advance: AKprinceofpersia, Thrb_73, nimoxide, Siyah, AmiraliRafiei and _Robi.

Full text and comments »

  • Vote: I like it
  • +63
  • Vote: I do not like it

By AmShZ, 3 months ago, In English

Hello everyone!

The next Standard round is here.

Repovive Standard Round 5 will be held on Monday.

Standard rounds are intended to be close to Codeforces Div.2 level. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

UPD1: The contest has been postponed by one day, from Sunday to Monday.

Full text and comments »

  • Vote: I like it
  • +9
  • Vote: I do not like it

By AmShZ, 3 months ago, In English

Hello everyone!

We are opening a Call for Tasks for upcoming Repovive contests.

Repovive is a competitive programming platform that regularly hosts Starter, Standard, and Premier rounds. We are looking for original and high-quality problems from the community.

We especially welcome complete contest proposals, since having a full set with a consistent difficulty curve usually leads to a better contest. However, submitting a single task is also completely fine.

You can submit your proposal here: https://repovive.com/proposals/contest

After submitting a proposal, we will contact you and provide feedback within at most 3 days. If the proposal is accepted, the payment will be made immediately according to the payment structure below.

What kind of tasks are we looking for?

We are interested in problems with clean ideas, short and natural statements, and solutions where the main difficulty is algorithmic thinking.

In general, we prefer tasks that are:

  • original and unpublished;
  • not implementation-heavy without a strong idea;
  • easy to understand after reading the statement;
  • backed by a clear intended solution.

When submitting a task, please include the statement idea, intended solution, expected difficulty, and any important observations. If you are submitting a full contest, please submit the tasks as a set with their intended slots.

Payment structure

The following amounts are our current rewards for accepted tasks, depending on the final position and difficulty of the problem.

Problem Premier rounds Standard rounds
A $7 $5
B $10 $7
C $20 $10
D $30 $20
E $45 $30
F $75 $45
G $100 $75

The final position of a task may be adjusted during preparation, and the reward will be based on the position where the task is finally used.

These amounts may be updated over time, and we will announce any changes in advance.

The authors of accepted tasks will be shown on the page of each problem. For example, you can see the author section on this task.

We are looking forward to seeing your ideas!

Full text and comments »

  • Vote: I like it
  • +65
  • Vote: I do not like it

By AmShZ, history, 3 months ago, In English

Hello everyone!

We are back with another Premier round!

Repovive Premier Round 5 will be held this Sunday.

Premier rounds are currently the highest level among our contest series. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

UPD1: We apologize for the short issue that the website had for around $$$5$$$ minutes during the contest. Thank you for your patience.

You can now view the solutions in the Learn tab.

Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +28
  • Vote: I do not like it

By AmShZ, 3 months ago, In English

Hello everyone!

The next Starter round is here.

Repovive Starter Round 3 will be held next Sunday.

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC.

The contest is rated for participants with rating below $$$1700$$$, whose role is at most Sushi Roll. It is unrated for Steaks.

See you on the leaderboard!

Full text and comments »

  • Vote: I like it
  • +28
  • Vote: I do not like it

By AmShZ, 4 months ago, In English

Hello everyone!

The next Standard round is here.

Repovive Standard Round 4 will be held next Wednesday.

The contest is rated for everyone.

See you on the leaderboard!

UPD1: Fortunately, the contest went smoothly without any issues. You can now view the solutions on the problem page.

Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +8
  • Vote: I do not like it

By AmShZ, 4 months ago, In English

Hello everyone!

The next Starter round is here.

Repovive Starter Round 2 will be held next Sunday.

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC.

The contest is rated for participants with rating below $$$1700$$$, whose role is at most Sushi Roll. It is unrated for Steaks.

See you on the leaderboard!

UPD1: Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +40
  • Vote: I do not like it

By AmShZ, 4 months ago, In English

Hello everyone!

We are back with another Premier round!

Repovive Premier Round 4 will be held next Sunday.

Premier rounds are currently the highest level among our contest series. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

UPD1: Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +3
  • Vote: I do not like it

By AmShZ, 4 months ago, In English

Hello everyone!

The next Standard round is here.

Repovive Standard Round 3 will be held next Sunday.

The contest is rated for everyone.

See you on the leaderboard!

UPD1: Fortunately, the contest went smoothly without any issues. You can view the solutions in the Learn tab.

Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +61
  • Vote: I do not like it

By AmShZ, 5 months ago, In English

Hello everyone!

The first Starter round is here!

Starter rounds are designed to be beginner-friendly, with a level close to Codeforces Div.3 / AtCoder ABC. Since our rating system is still taking shape, this contest will be rated for everyone.

The contest is rated for everyone.

See you on the leaderboard!

Full text and comments »

  • Vote: I like it
  • +37
  • Vote: I do not like it

By AmShZ, 5 months ago, In English

Hello everyone!

We are very happy that our previous contest was held without issues.

The next Premier round is here.

Premier rounds are currently the highest level among our contest series. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

UPD1: Fortunately, the contest went smoothly without any issues. You can view the solutions in the Learn tab.

Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +57
  • Vote: I do not like it

By AmShZ, history, 5 months ago, In English

I and Amoo_Safar always discuss our lazy segment tree logic.

The difference is this:

When I enter a node, I first apply its pending lazy value to the node itself.

But Amoo_Safar's assumption is that when he enters a node, the lazy value has already been applied before.

Below I show how this difference appears in implementation.

Amoo_Safar's style

In this style, the node is considered already updated correctly. The lazy value only means that this effect still has to be pushed to the children later.

So before going deeper, we call shift(id).

void upd(int id, int val) {
    seg[id] += val;
    lazy[id] += val;
}

void shift(int id) {
    if (!lazy[id]) return;
    upd(id << 1, lazy[id]);
    upd(id << 1 | 1, lazy[id]);
    lazy[id] = 0;
}

void update(int id, int l, int r, int ql, int qr, int val) {
    if (qr <= l || r <= ql) return;
    if (ql <= l && r <= qr) {
        upd(id, val);
        return;
    }
    shift(id);
    int mid = (l + r) >> 1;
    update(id << 1, l, mid, ql, qr, val);
    update(id << 1 | 1, mid, r, ql, qr, val);
    seg[id] = pull(seg[id << 1], seg[id << 1 | 1]);
}

My style

In this style, when I enter a node, I do not assume its pending lazy has already been applied to the node itself.

So the first step is to call shift(id, l, r) and make the node clean at that moment.

void shift(int id, int l, int r) {
    if (!lazy[id]) return;
    seg[id] += lazy[id];
    if (r - l > 1) {
        lazy[id << 1] += lazy[id];
        lazy[id << 1 | 1] += lazy[id];
    }
    lazy[id] = 0;
}

void update(int id, int l, int r, int ql, int qr, int val) {
    shift(id, l, r);
    if (qr <= l || r <= ql) return;
    if (ql <= l && r <= qr) {
        lazy[id] += val;
        shift(id, l, r);
        return;
    }
    int mid = (l + r) >> 1;
    update(id << 1, l, mid, ql, qr, val);
    update(id << 1 | 1, mid, r, ql, qr, val);
    seg[id] = pull(seg[id << 1], seg[id << 1 | 1]);
}

Both are correct. The main difference is just the invariant you keep in your head while writing the code.

Which one do you use, and why?

Full text and comments »

  • Vote: I like it
  • +53
  • Vote: I do not like it

By AmShZ, 5 months ago, In English

Hello everyone!

We are back!

Due to the ongoing war in Iran, we had to postpone Repovive Standard Round 2.
While the situation prevented us from hosting the contest on time, we used this period to fix several technical issues and improve the platform.

We are now ready to host Repovive Standard Round 2. We hope you enjoy it!

The contest is rated for everyone.

See you on the leaderboard!

UPD1: Fortunately, the contest went smoothly without any issues. You can view the solutions in the Learn tab.

Congratulations to the top participants:

Full text and comments »

  • Vote: I like it
  • +45
  • Vote: I do not like it

By AmShZ, history, 5 months ago, In English

Hi everyone,

I’ve been wondering about a question that might be quite useful for contest platform organizers. If a contest is held on a Sunday, what starting time do you prefer the most?

If you had to choose between these options:

  • 10:00 UTC
  • 12:00 UTC (Usual AtCoder time)
  • 14:30 UTC (Usual Codeforces time)
  • 16:00 UTC

Or if you prefer a completely different time, please let me know the time as well as your time zone.

Full text and comments »

  • Vote: I like it
  • +80
  • Vote: I do not like it