MikeMirzayanov's blog

By MikeMirzayanov, 12 years ago, translation, In English

Hello! Do you feel the breath of New Year?

The clock shows a day before New Year, so it is time to sum up the past. I do not have speech-writers for words in the style of "what recently seemed almost impossible, it becomes a fact of life" so I'll be short. Thank you all! Your unfading interest and constant help inspire Codeforces team for new achievements! Brilliant writers, invisible soldiers: testers, tireless and greedy for knowledge participants — all of you help Codeforces do better!

I've dug into the records and made a partial list of the most notable major improvements of 2013. Some large improvements of our infrastructure are not in the list, as the community can not see them directly.

  • A simple way to add contest from Polygon to Codeforces::Gym.
  • Drafts embedded in text form fields in Codeforces and Polygon.
  • Multiple interface improvements in the contest area.
  • Many improvements of Testlib.
  • Notably improved performance of Polygon on large manual tests.
  • Repeatedly updated compiler versions to the nearly latest.
  • Supported languages: MS C#, Python 3, Go, JavaScript V8.
  • Updated Codeforces testing servers.
  • Polygon supported HTTPS.
  • Organized the first season of weekly Codeforces trainings 12 episodes.
  • Supported organizations in the profile and rating of organizations.
  • Added numerous contests to Codeforces::Gym. Probably the most valuable — a large number of Andrew Stankevich Сontests.
  • Implemented checker and validator tests in Polygon.
  • Implemented macro language support in test scripts in Polygon.
  • Groups on Codeforces have appeared, they can contain contests and blogs.
  • Introduced Mashup Contests — special contests for personal and group training, can be easily composed by problems from rounds or from Polygon.

In addition, in 2013 we not only hosted 64 classical Codeforces rounds, but hosted some tournaments:

Also we took a role of ACM-ICPC 2013 World Finals Press Partner!

And as the detective story can not be without a chase, and the annual report can be do without the fun pictures. Here is a series of images showing the growth of Codeforces:

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

I've found some time to support JavaScript, which is so popular now. I chose V8 as the most developed implementation of JavaScript.

With the help of a tambourine and a liter of cola I successfully compiled it on Windows. Funny, I was ready to implement workaround to support reading from stdin in JavaScript, but d8 already supports it! Just use readline() to read line from the input.

Here is an example of A+B:

var line = readline().split(' ')
print(parseInt(line[0]) + parseInt(line[1]))

Interesting fact, that if there is no line-break (\r\n) at the end of line, then readline() returns undefined. So it is one more reason for good rule: each line should end with eoln.

As a tiny research I've implemented HeapSort on C++, Java and JavaScript. I have an opinion that all dynamic typed languages are very slow. But...

I've implemented HeapSort on 107 elements from 0 to 9999999. I think it is good benchmark to show how fast can be your code if you write like in Pascal or pure C. The result have surprised me:

Language Compiler Running time, ms
C++ MinGW 4.7.2 32-bit 630
C++ MS VS 2010 32-bit 650
Java Oracle Java 6 32-bit 1060
Java Oracle Java 7 32-bit 1050
JavaScript V8 3.23.0 32-bit 1700
Pascal Delphi 7 32-bit 630
Pascal FreePascal 2.6.2 32-bit 730
Python 2 Python 2.7.4 32-bit 12500
Python 3 Python 3.3.2 32-bit 20000
Ruby Ruby 1.9.3p0 (2011-10-30, i386-mingw32) 32-bit 520000
Ruby Ruby 2.0.0p353 (2013-11-22, i386-mingw32) 32-bit 345000
Scala Scala 2.10.3 (over Oracle Java 7 32-bit) 1550
Go Go 1.2 32-bit 1780
D DMD v2.064.2 32-bit 800
C# Mono 2.10.9 32-bit 850
C# MS CSC .Net 4.5.1 64-bit 850
Perl Perl v5.12.2 for MSWin32-x86-multi-thread 195000

JavaScript shows very good performance! I understand that such kind of code is very good for optimization and jit-compilation, but I'm impressed. By the way, Java with its optimized JIT is not as good as it can be.

Actually, I posted the codes in github. You may implement the same algorithm on your favorite language. Here are links to current implementations:

You may post links to pastebin in comments or give submission id. Better to do a pull request.

If you are planning to write implementation, please write it neat and tidy. Write it as closer to the C++, Java and JavaScript as possible.

UPD 1. With the help of alexei-zayakin, Pascal has been added.

UPD 2. With the help of gchebanov Wizmann and juancate I've added Python 2, Python 3, Ruby, Scala, Go.

UPD 3. Here is V8 (Windows binaries).

UPD 4. I've updated some compilers and the benchmark results.

UPD 5. Added D. Thanks Gassa.

UPD 6. Added C#. Thanks gmogelashvili.

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

The tutorial has been prepared by Fefer_Ivan and NALP.

371A - K-Periodic Array

For array to be periodic, elements 1, 1 + k, 1 + 2 * k, … must be equal. Also, elements 2, 2 + k, 2 + 2 * k, … must be equal. And so on up to k. So each element of the array is a part of exactly one group. And there are k groups total. Each such group is independent. Let’s consider some group of elements, that contain a ones and b twos. All elements in this group must be equal. So we either change all ones to twos or all twos to ones. First option will require a changing operations and second one — b changing operations. For the optimal solution, you should select the operation with smaller number of changing operations required.

371B - Fox Dividing Cheese

It is easy to see that the fox can do three type of operations: divide by 2, divide by 3 and divide by 5. Let’s write both given numbers in form a = x·2a2·3a3·5a5, b = y·2b2·3b3·5b5, where x and y are not dibisible by 2, 3 and 5. If x ≠ y the fox can’t make numbers equal and program should print -1. If x = y then soluion exists. The answer equals to |a2 - b2| + |a3 - b3| + |a5 - b5|, because |a2 - b2| is the minimal number of operations to have 2 in the same power in both numbers, |a3 - b3| is the minimal number of operations to have 3 in the same power in both numbers, and |a5 - b5| is the same for 5.

371C - Hamburgers

Let's use binary search approach. For given number of hamburgers (say, x) let's find the minimal number of money needed to cook them. Say, for one hamburger Polycarpus needs cb bread pieces, cs sausages pieces, cc cheese pieces. So for x hamburgers he needs: cb·x, cs·x and cc·x pieces (by types). Since he already has nb, ns and nc pieces, so he needs to buy:

  • bread: max(0, cb·x - nb),
  • sausages: max(0, cs·x - ns),
  • cheese: max(0, cc·x - nc).

So the formula to calculate money to cook x hamburgers is:

f(x) = max(0, cb·x - nbpb + max(0, cs·x - nsps + max(0, cc·x - ncpc

Obviously, the function f(x) is monotonic (increasing). So it is possible to use binary search approach to find largest x such that f(x) ler.

371D - Vessels

The naive solution for this problem will work like this. Let us store an amount of water in each vessel in some array v. If we need to know how much water is in some vessel, we just take the number from the array. If we need to pour x units of water into vessel number i, we must follow the simple procedure: 1. If x = 0 then all water is poured and we must end the procedure 2. If i > n then all remaining water is spilled on the floor and we must end the procedure 3. If x units of water can fit into the i-th vessel, then add x to v[i] and end the procedure 4. Fill i-th vessel completely and subtract used amount from x. 5. Assign i = i + 1. 6. Go to the first step.

In the worst case scenario such procedure can iterate through all vessels each time. For example, if there are n vessels and each vessels have capacity of one unit of water, each query like 11n will take O(n) time to process.

To make this solution faster we should notice, that once completely filled, vessel can be skipped during the algorithm above because it can not consume any more water.

So instead of i = i + 1 assignment should be like i = findNextNotFilledVessel(i).

To implement this function we can use different structures. For example, we can use sorted set of numbers (set in C++, TreeSet in Java). Let store the set of indices of unfilled vessels. So to find next not filled vessel from i-th vessel, we must find smallest number, that is contained in set and is strictly greater than i. There are built-in methods for it (upper_bound in C++, higher in Java).

Also, each time we fill the vessel, we must erase corresponding index from the set.

So now we can see, that algorithm can not complete more that O((m + n)logn) operations for all queries. Because on each iteration of the pouring procedure either the vessel is filled (which can only happen n times during the whole runtime), or we run out of water (or vessels) and the procedure is stopped. So there will be only total of O(m + n) iterations of the pouring procedure and each iteration require one lookup in the sorted set, which takes O(logn) operations. So the total number of needed operations is O((m + n)logn).

371E - Subway Innovation

It is easy to see that you need to minimize the sum of pairwise distances between k stations. The main idea to do it is to sort them and the required stations will form a continuous segment. It is easy to prove by contradiction.

Huge constraints do not allow to use straight-forward method to find required segment. Let’s call f(i, k) — sum of pairwise distances of k stations starting from the i-th. To find f(0, k) you need to start from f(0, 0) = 0 and use transformation from calculated f(0, i) to f(0, i + 1). You can use equation:

 = f(0, i) + xi·i - sum(0, i - 1)

where sum(l, r) means xl + xl + 1 + ... + xr. We can precalculate sum[i] = x0 + x1 + ... + xi and use equation sum(l, r) = sum[r] - sum[l - 1] to find sum(l, r) in O(1).

Actually we need f(0, k), f(1, k) and so on (and find minimal value among them).

To recalculate f(i, k) to f(i + 1, k) you need exclude xi and include xi + k. Using the method like in the previous paragraph: f(i + 1, k) = f(i, k) - (sum(i + 1, i + k - 1) - xi·(k - 1)) + (xi + k·(k - 1) - sum(i + 1, i + k - 1)).

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Please take a notice that recently the schedule has been changed. Twice.

Greetings to the Codeforces community!

I'm glad to announce that we again decided to introduce a round based on one of the programming olympiads for schoolchildren in Saratov. This time it is a round for participants from Division II. Round will start at unusual time for Codeforces: Dec. 7, 07:00 UTC.

The problems were prepared by employees and students of Programming Competitions Training Center of Saratov State U.

Members of the first division can participate out of competition, as usual.

Currently we are planning to use dynamic scoring system.

UPD: Moved from 09:00 to 07:00 because of Kotlin Challenge.

UPD 2: Tutorial has been published.

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Tomorrow (December, 1st) at 06:00 (UTC) Northeastern European Regional Contest 2013 will start. Use the link to view the current stangings during the contest.

The contest will take place in four cities at the same time: Saint-Peterburg, Barnaul, Tbilisi, Tashkent. Looking to the standings of the practice session it is clear that totally 235 teams will fight for the honour to take part in the Finals.

NEERC takes place since 1996. Here are NEERC Champions:

Year Winner
1996 Spb ITMO
1997 Spb SU
1998 Moscow SU
1999 Spb SU
2000 Spb SU
2001 Spb ITMO
2002 Moscow SU
2003 Spb ITMO
2004 Spb ITMO
2005 Moscow SU
2006 Moscow SU
2007 Spb ITMO
2008 Saratov SU
2009 Petrozavodsk SU
2010 Spb ITMO
2011 Spb ITMO
2012 Spb ITMO
2013 Spb SU

I wish all the teams to show their strongest sides. Good luck!

P.S. For sure, I will be rooting for Saratov State University. You know well our leading team: Gerald, Fefer_Ivan, kuviman.

P.S. The contest finished. My congratulations to:

  • The 1st place: SPb SU 4 (Kunyavskiy, Egorov, Suvorov)
  • The 2nd place: Moscow SU 1 (Pyaderkin, Evstropov, Omelyanenko)
  • The 3rd place: Saratov SU 1 (Agapov, Fefer, Kudasov)

The complete standings are here.

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Welcome to 2013-2014 CT S01E012: Codeforces Trainings Season 1 Episode 12. The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Please do not take part in the contest if you have already solved the contest problems before.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Welcome to 2013-2014 CT S01E011: 2013-2014 ACM-ICPC East Central North America Regional Contest (ECNA 2013). The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Please do not take part in the contest if you have already solved the contest problems before.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Hello,

I know that the news will upset some of you: the round was moved 1.5 hours forward and it will start on 17:00 UTC.

As for me — the reason is very pleasant. The round original time coincided with a sniper's accuracy with the celebration of my daughter's birthday. Oh, St. Dijkstra, Tatyana is 2 years old! Last week I did many changes in judging backend (around caching) and I don't want in case of some issues to have a choice — to have a bad round or to have a bad celebration. I hope you understand!

Also I'm sure that new time will be more comfortable for some of you.

Hope to see you on the round!

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Welcome to 2013-2014 CT S01E09: 2011 German Collegiate Programming Contest (GCPC 2011) + GCJ 2009 R3 C-D. The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Good luck!








Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Welcome to 2013-2014 CT S01E08: 2013 ACM-ICPC Rocky Mountain Regional Contest (RMRC 2013) + GCJ 2009 WF C-D. The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 12 years ago, translation, In English

Hello,

Did you already notice that this Sunday it will be Internet-version of 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest? It will start on 07:00 (UTC).

The contest will be held in Gym. I invite teams mostly because the contest was designed as a team contest.

I'm sure this contest is a great way to train before coming regional (or subregional for some of you) ACM-ICPC contest.

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Welcome to 2013-2014 CT S01E07: Codeforces Trainings Season 1 Episode 7. The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Welcome to 2013-2014 CT S01E06: 2002-2003 ACM-ICPC Northwestern European Regional Contest (NWERC 2002) + Some Problems from COCI and POI. The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Welcome to 2013-2014 CT S01E05: 2007 Nordic Collegiate Programming Contest (NCPC 2007) + Selected Problems from 2009 Google Code Jam World Finals (GCJ WF 2009). The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Welcome to 2013-2014 CT S01E04: 2013 Kashan Contest + Some Problems of 2009 Google Code Jam World Finals (GCJ WF 2009). The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

The most problems were given by mohammadrdeh. Thanks! It is the great help. Take example!

Good luck!

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Recently we’ve changed the contribution formula. Now it reflects the current social activity, that’s why all votes for posts and comments are divided by two every 180 days. On the one hand it helps to distinguish the currently active Codeforces members, on the other hand it makes the contribution top more dynamic and opened for the newcomers.

For example, now Egor is the leader of the contribution top because of the (mostly) many interesting posts about ACM-ICPC World Finals. But it looks like 9 months after the World Finals, he can loose the first place.

Also I’ve made some changes with the votes:

  1. Now the negative score is not shown (just 0) if it is in range [-5,-1]. I did it because many of you downvote just because you see the negative score.
  2. Visualization of vote in comments.
  3. Changed some rules to transform votes to contribution, but it is a monotonic function anyway.
  4. A comment becomes partially transparent if it has -10 or less (it was -5).
  5. A comment becomes hidden with the message about too negative feedback if it has -25 or less (it was -10).

I hope you we will do same changes as in items 1-2 for posts.

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Welcome to 2013-2014 CT S01E03: selected problems from 2002 Central European (CEPC 2002) + 2010 Southeast USA Region. The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration will be available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Welcome to 2013-2014 CT S01E02: Extended 2003 ACM-ICPC East Central North America Regional Contest (ECNA 2003). The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

The registration is available on the Gym page and will be opened until the end of the training. Be careful registering team: please, choose only whose members who will take part in the contest.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

Welcome to 2013-2014 CT S01E01: Extended 2000 ACM-ICPC East Central North America Regional Contest (ECNA 2000). The training duration is 5 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

The new season of a collegiate team championship ACM-ICPC is about to start. For example, the registration for the Southern (Saratov) Subregional Contest is already running. I am sure that many participants of the Codeforces rounds will take part in ACM-ICPC this year.

We are launching a series of weekly practice trainings on Codeforces. Naturally, they will be held within Codeforces::Gym. Feel free to participate!

The practice starts at about 12:10 PM (UTC), which is 16:10 Moscow Time. We are going to practice using the problems of different contests of the past years. All you need is common sense and observing these simple rules:

  • We will not publish the problem source before the practice starts. We want you to solve the problems on your own in a fair competition. If you use somebody else’s code or cheat in any other way, you will be disqualified. If you don’t want to solve on your own, that’s fine, you don’t have to. But spoiling the practice for others is unacceptable.
  • Do not discuss the problems till the practice ends.
  • We will rarely answer the questions about problems. If you’ve found some obvious bug, please let me know. We will fix the bug and send everybody the note about the fix.
  • If you have a coach account (and you do not participate in the practice), we will be grateful for your help.
  • Please register for the practice with the people from your team who actually participates in it.
  • From time to time, I am going to ask some of the jury of the past contests or coaches from other higher educational institutions to help with preparing or share materials — your understanding and help will be greatly appreciated!
  • if you solved the contest problems before just switch to another training or inform us via problem questions form, we will move you to out-of-competition role.

The first practice takes place on September, 11, at about 12:10 PM (UTC).

Full text and comments »

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

By MikeMirzayanov, 13 years ago, translation, In English

With the help of some experienced and respected members of the community (thanks!) there was formulated a rule that allows a third party code to be used under certain conditions. Please read carefully the text.

The following text will go as part of a renewed competition rules. The closest contest will be held already on the updated rules. Thus, there are about two days for further details, if something is unclear.

Solutions and test generators can only use source code completely written by you, with the following two exceptions:

  1. the code was written and published/distributed before the start of the round,
  2. the code is generated using tools that were written and published/distributed before the start of the round.

Any usage of third-party code should not violate the right holder’s license or copyright. Remember that published code is not always free to use! At the request of the right holder, any code that violates the license or copyright may be considered as violating the rules.

All the changes in the code from exceptions 1) and/or 2) must be made solely by you.

If there are any doubts about the time of publication, possible collaboration etc., a participant will have to prove his/her complete innocence by presenting compelling and satisfactory evidence.

Currently, the only reliable proof is the presence of code on the Internet and the presence of the used edition in the cache of well-known search engines.

For example, this rule accepts the use of the code from the website http://e-maxx.ru/ if the code was written and published/distributed before the start of the round. With the help of search engine caches, it can be easily shown that such code doesn't violate the rules. Similarly, it is permissible to use the code from a book/article that was published before the contest. On the other hand, using team reference code (for example, prepared for ACM-ICPC World Finals) is not allowed if there is no reliable and objective way to prove that the code was written before the contest.

This rule doesn't loosen the rules about prohibiting of communication, discussion, or any other form of communication between the contestants on any topics about the problems during the round.

Full text and comments »

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