aropan's blog

By aropan, history, 2 months ago, translation, In English

Good mood and pure thoughts to everyone who comes here.

1422A - Fence
Author aropan
Solution 94875319

Tutorial

1422B - Nice Matrix
Author andrew
Solution 94875245

Tutorial

1422C - Bargain
Author aropan
Solution 94875502

Tutorial

1422D - Returning Home
Author aropan
Solution 94875536

Tutorial

1422E - Minlexes
Author aropan
Solution 94875558

Tutorial

1422F - Boring Queries
Author andrew
Solution 94875580, author's solution with persistent segment tree 94875295

Tutorial

Read more »

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

By aropan, history, 2 months ago, translation, In English

Tryam, Codeforces!

andersen

Perhaps you are waiting for us to announce the final of BSUIR championship, but for now we are only glad to invite you to Codeforces Round #675 (Div. 2), which will be held on Oct/04/2020 19:05 (Moscow time). This round will be rated for the participants with rating lower than 2100.

The problems were prepared for you by andrew, hloya_ygrt, AleXman111 and Vladik together with me. We think that we have prepared good problems for [contest:297213]. After that we selected the best ones for this round.

The company Andersen has been holding a competition for the second year already, which is primarily intended to support students of regional universities in Belarus and Ukraine (starting this year).

First of all, we would like to thank MikeMirzayanov and everyone involved in the development of Codeforces and Polygon platforms. No less thanks to KAN for coordination — thanks to him you will be able to understand our problems. And also to all our coaches and parents who taught us to do everything that we can do.

The score distribution promises to be like this: 500 — 750 — 1000 — 1500 — 2000 — 2750.

Good luck and clean code to everyone!

UPD

Congratulations to the winners of the official standings:
1. Yukikaze_
2. lunabbit
3. kamer
4. Potassium_Fan
5. 2018LZY

And overall winners:
1. pikmike
2. dlalswp25
3. tfg
4. Heltion
5. hank55663

The editorial will come later.

UPD

The editorial came.

Read more »

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

By aropan, history, 6 months ago, translation, In English

Search standings of author now available https://clist.by/standings/?search=writer:Ashishgup:

You can also view your results on the author’s contests https://clist.by/coder/?search=writer:Ashishgup:

If you are unregistered (strange, because registration is free) then you can use this link https://clist.by/account/${YOUR_HANDLE}/resource/codeforces.com/?search=writer:Ashishgup, example:

Currently available only for codeforces and atcoder.

Read more »

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

By aropan, history, 7 months ago, translation, In English

Such graphs can be seen here:

ratings-history

But of course it is better to look right here.

Can I have the same ones??

Sure. Sign up, add your accounts and enjoy.

UPD

There is also a rating distribution for different resources, for example:

rating-distribution

But its relevance may diverge due to inactive participants.

Read more »

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

By aropan, history, 7 months ago, translation, In English
 
 
 
 
  • Vote: I like it
  • +31
  • Vote: I do not like it

By aropan, history, 8 months ago, translation, In English

https://clist.by/standings/code-jam-qualification-round-16820931/?detail=true
There is search by participants, countries and languages. And viewing solutions without downloading file.

UPD

Added grouping by country (and not only for code jam) and languages:
https://clist.by/standings/code-jam-round-1a-16820932/?detail=true&groupby=country
https://clist.by/standings/code-jam-round-1a-16820932/?detail=true&groupby=languages

Read more »

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

By aropan, 21 month(s) ago, translation, In English

The results and upsolving of the semifinal are available at link. Many thanks to all guys who made this contest for you: hloya_ygrt, teleport, wilcot, ShavelV, rui-de, Vladik, vilcheuski, netman, tkach1024 and jklementseva.

The 9th BSUIR Open Programming Championship will be held from March 13 till April 25, 2019 (Minsk, Belarus).

Read more »

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

By aropan, 3 years ago, translation, In English

The 8th BSUIR Open Programming Championship will be held from February 16 till April 13, 2018 (Minsk, Belarus).

Read more »

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

By aropan, history, 4 years ago, translation, In English

The 7th BSUIR Open Programming Championship will be held from March 31 till April 28, 2017 (Minsk, Belarus).

Read more »

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

By aropan, 4 years ago, translation, In English
 
 
 
 
  • Vote: I like it
  • +182
  • Vote: I do not like it

By aropan, history, 5 years ago, translation, In English

The 6th BSUIR Open Programming Championship will be held from March 26 till April 28, 2016 (Minsk, Belarus). Undergraduates and postgraduates of BSUIR, students of other educational institutions, students from other universities and CIS countries are invited to participate in the Championship.

The competition will take place in three rounds:

  • first qualifying round (distance, problems in russian) — March 26-29;
  • second qualifying round (distance/onsite semi-final, russian and english problems) — April 5;
  • Championship final (onsite, only english problems) — April 26-28.

First qualifying round is required only for BSUIR and high school teams but other registered teams can also take part in it. Second qualifying round is required for all teams; BSUIR and high school teams from Minsk take part onsite, other teams — distance.

To participate in the Championship teams need to be registered prior to 03.04.2016 incl (prior to 28.03.2016 for BSUIR and high school teams). Participation is free of charge — have fun.

The finalists are 42 teams, showed the best results in the qualifying rounds, but no more than:

  • 7 teams of undergraduates and postgraduates of BSUIR;
  • 5 school teams (one team from each of the educational institution);
  • 2 teams from each of the university of Belarus and near and far abroad.

Open BSUIR Programming Championship is held by the ACM rules. During the Championship, the teams will be given 5 hours to solve 8 to 12 programming problems. The problems are written in English.

More information about the championship, as well as the problems and results of previous years, you may find at acm.bsuir.by. A little bit of last year video:

UPD Broadcast of Final link.

Read more »

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

By aropan, 6 years ago, translation, In English
bo2015

The V BSUIR Open Programming Championship will be held from 7 till 24 April, 2015 (Minsk, Belarus). Undergraduates and postgraduates of BSUIR, students of other educational institutions, students from other universities and CIS countries are invited to participate in the Championship.

The competition will take place in three rounds:

  • first qualifying round (distance) — April 7̶-̶9̶ 10-13;

  • second qualifying round (onsite semi-final) — April 14-16;

  • Championship final — April 22-24.

Teams from the universities of near and far abroad are invited immediately to the final of the competition (no more than 2 from the same university). To participate in the Championship teams need to be registered prior to 17.04.2015 incl. Qualifying rounds (quarter-finals and semi-finals) are required only for the teams from BSUIR and high school teams. Other registered teams can also take part in the qualifying rounds.

Open BSUIR Programming Championship is held by the ACM rules. During the Championship, the teams will be given 5 hours to solve 8 to 12 programming problems. The problems are written in English. More information about the championship, as well as the problems and results of previous years, you may find at acm.bsuir.by.

UPD. April 5. Moved the date of first qualifying round.

UPD. May 8. Practice and virtual participation of all the stages of the championship is available on Yandex.Contest. Statements are also available on the championship website. Analysis is coming.

Read more »

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

By aropan, 9 years ago, translation, In English
 
 
 
 
  • Vote: I like it
  • 0
  • Vote: I do not like it

By aropan, 9 years ago, translation, In English
 
 
 
 
  • Vote: I like it
  • +25
  • Vote: I do not like it

By aropan, 9 years ago, translation, In English
Div-2. 124A - The number of positions
Let's iterate through the each item and check whether it is appropriate to the conditions a ≤ i - 1 and n - i ≤ b (for i from 1 to n). The first condition can be converted into a + 1 ≤ i, and the condition n - i ≤ b in n - b ≤ i, then the general condition can be written max(a + 1, n - b) ≤ i and then our answer can be calculated by the formula n - max(a + 1, n - b) + 1.
The author's solution

Div-2. 124B - Permutations

Let's try all possible ways to rearrange digits in the numbers and check the difference between maximum and minimum number.
The author's solution

Div-1. 123A - Prime Permutation
Div-2. 124C - Prime Permutation

All positions except the first and those whose number is a prime greater |s| / 2 have to have the same symbol. Remaining positions can have any symbol. Consider positions that should be the same for p = 2 is 2,4,6,8 ... Now let's take a position with the number x ≤ |s| / 2, this position should have the same character as the position of 2 as the symbol x must be equal to the character at position 2 * x, which is equal to the character at position 2. Now consider the position whose number is more than |s| / 2. If this position is not a prime then there is a prime number p to divide the number at our positions and p ≤ |s| / 2. So character at position p is equal the character at position 2 and so a symbol at our position is also consistent to the character at position 2. The remaining positions are not combined with any other positions so it does not matter which symbol is situated here.
Let's find the symbol which occurs the most and try to place the symbol on the position in which the characters have to be equal. If this symbol for all positions is not enough then the answer will be "NO", otherwise arrange the remaining characters by any way at other positions.
The author's solution

Div-1. 123B - Squares

Div-2. 124D - Squares
Let's turn the field on 45o transforming cells coordinates (x, y) in (x + y, x - y). Then the cell (x, y) will be bad if one of the conditions occurs x ≡ 0 (mod 2a) or y ≡ 0 (mod 2b). So good cells will be divided into sectors by vertical and horizontal lines. For each sector, it is possible to determine the coordinates of a pair of numbers, the first number that will rise during the transition to the next right sector, and the second pair number will increase during the transition to the next upper sector. From the sector with coordinates (x, y) can go to any nearby on the side of the sector, visiting at least one bad cell, ie in (x - 1, y), (x + 1, y), (x, y - 1) and (x, y + 1). Since the numbers 2a and 2b have the same parity, then from the sector (x, y) can also go to the sector on the diagonal, and visiting a bad cell, ie in (x - 1, y + 1), (x + 1, y - 1), (x - 1, y - 1) and (x + 1, y + 1). Then it turns out that the minimum number of bad cells, which should be visited on the way out of from the sector (x1, y1) to sector of (x2, y2) equals max(|x1 - x2|, |y1 - y2|).
Let's transform the coordinates of the initial and final cells as described rule above. Then find sectors which contain our cells and calculate answer with formula above.
The author's solution

Div-1. 123C - Brackets

Div-2. 124E - Brackets
Let's reduce the problem to a one-dimensional matrix. Consider a monotonous path (1, 1), (1, 2), ..., (1, m - 1), (1, m), (2, m), ..., (n - 1, m), (n, m) which has correct bracket sequence. Now, in this way a cell (1, m) can be replaced on (2, m - 1) and still be a monotonous way and will form the correct sequence of the bracket. So in the cells of (1, m) and (2, m - 1) is one type of bracket. Proceeding further (eg to replace (1, m - 1) on (2, m - 2) or (2, m) on (3, m - 1)) can be seen that in cells (i, j) and (i - 1, j + 1) is one type of bracket. Then we get not two-dimensional array n × m, a one-dimensional size n + m - 1. For each position can be determined what her highest priority, ie for cell i (1 ≤ i ≤ n + m - 1), the priority will be equal to the minimum value of px, y where 1 ≤ x ≤ n, 1 ≤ y ≤ m and x + y - 1 = i.
Let's iterate through the positions, starting with the highest priority. Let's put in this position the bracket "(" and consider how many ways can complete the remaining brackets to get the correct bracket sequence. If the number of ways of not less than k, then leave in this position "(", or reduce the k on the number of ways and put in this positions bracket ")". And so let's iterate through all items. In order to calculate the number of ways each time dynamics is calculated on two parameters fi, j, where i is the number of processed positions, and j is the number of opened brackets. If the position of i + 1 bracket is not defined yet then you can go to fi + 1, j + 1 or fi + 1, j - 1, if defined then only fi + 1, j + 1 or only fi + 1, j - 1, depending on opening or closing bracket respectively.
The author's solution

Div-1. 123D - String

Sort all suffixes of the string (denoted by an array of strings ci). Then the answer to the problem is the amount of 1 ≤ i ≤ j ≤ |s| and 1 ≤ k, that the prefixes of length k in all ci..j are equal. Options when i = j, and 1 ≤ k ≤ |ci| can calculate at once, it is the number of substrings in the string, ie |s| * (|s| + 1) / 2. Now let's count the LCP (longest common prefix) for adjacent suffixes, ie ai = LCP(ci, ci + 1) for 1 ≤ i < |s|. Then let's count the number of 1 ≤ i ≤ j < |s| and 1 ≤ k, that k ≤ min(ai..j). This task is to count the number of rectangles if there is a limit to the height of each column, ie ai the maximum height of the rectangle in the column i. Solve by a stack or list.
The author's solution

Div-1. 123E - Maze

Consider what is the expected value for a given entrance and exit vertexes. It is clear that there will be only one path from the entrance to the exit, which in any case will be passed. Also, you can still go in the wrong direction. Consider the case when the chosen vertex from which there is k false paths and one right (it is always). Then before going in the right direction it can be 2k equiprobable way around false paths. Every false way occurs the 2k - 1 ways and to increase the number of moves in 2 ×  < amount of vertexes in false subtree >  ie expectation of a false path to increase by 2 ×  < amount of vertexes in false subtree >  × 2k - 1 / 2k =  < amount of vertexes in false subtree > . Then expectation in vertex is equal to sum of  < amount of vertexes in false subtrees >  + 1 (a move in the right direction) + expectation of the vertex if to go the right direction. The result is that the expected value equal to the number of edges reachable from the entrance, without passing through the exit.
Let's run dfs and consider of the vertex as exit vertex. Then, if in some subtree defined entrance, the expected value equal to the size of the subtree. Calculate how much of each subtree is the number of entrance and calculate the number of moves, if the exit is in the current vertex. It is necessary not to forget to count cases where the current vertex is an exit and entrance is higher in the tree traversal.
The author's solution

Read more »

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