When submitting a solution in C++, please select either C++14 (GCC 6-32) or C++17 (GCC 7-32) as your compiler. ×

MaximShipko's blog

By MaximShipko, 11 years ago, translation, In English

Good evening!

I'm glad to announce a series of improvements in the Codeforces::Gym subproject. Many people faced the following problem as they prepared problems in this section: to add a problem or edit an existing training a little bit, one had to parse and repackage the whole contest from the scratch in the Wizard. Another variant was manually editing the files on FTP. Both these ways added unreasonable challenges.

From now on you can create contest patches in the Wizard. Want to add a problem? There's no need to repackage the whole contest. Update the standings, add resources or statements? The procedure is simplicity itself. All you've got to do is to run the Wizard in the update mode and add only the really necessary changes. The Wizard will assemble the contest.zip package and mark it as a patch. You can upload the package into Taskbook in the usual manner.

Let's take a closer look at how the patch updates the contest.

  • The problem from the patch completely replaces the problem of the contest with the same index, otherwise it appears as a new problem. The problems from the contest's sandbox that don't occur in the patch, are left unchanged. To add problems to the contest, you need to run Wizard, create and parse one or several problems and assemble the package.

  • You can replace the problem statements and resources in the similar manner. A statement replaces the one that exists for this language, whatever the file name is. A resource replaces an existing one if they have the same names, otherwise a new resource is added.

  • File with standings of ghostly participants (contest.dat) replaces the existing one, if the new one contains at least one submit. If there is no such submit and the problems of the patch are a subset of the existing problems of the contest (in the sandbox), then contest.dat remains unchanged. Otherwise, a new contest.dat is generated (without submits) which joins together the sets of the contest problems and the patch problems. To update the results of the ghostly participants, you must parse the new standings in the Wizard, skip all problems by clicking Skip problem button, and pack.

Applying a patch assumes that the data of the patch and the current state of the sandbox are consistent. For this both the patch and the sandbox have a validation. This validation is similar to the one that occurs when you release a training, but is a bit simplified. When you download the full package of the contest, such validation does not occur, the archive unpacks as is and is checked only when the contest is released. The patch is applied only if both validations are completed successfully. Otherwise, the patch file is simply removed, and a new record in error.log of the training can tell you what went wrong.

The improvements also affected Taskbook, namely the validation system: if the problem was not changed since the last release of the contest, its validation won't be performed. This will dramatically speed up the process of releasing the training in the case of minor changes. If no file of the training was changed, then release will not happen, and the user will get the corresponding message.

As a little bonus we have made many improvements in the Wizard's interface. In particular, we added hotkeys for most actions (the details are in tooltips to the buttons), we have also improved a lot of dialogues:

  • We've accelerated launching the multiple file selection dialog in the Windows OS by hiding the Network element. The item can be returned by pressing a special button.

  • We've added a button that allows you to save the contest.dat, not assembling the full package.

  • We've changed the mechanism of launching open and save file dialogs. It had almost no impact on their look, but it let us add a number of enhancements, such as setting up a default file name and saving the current directory in the subsequent uses of the dialogue.

  • If saving the contest package fails, the user will be suggested to try to do it again. No need to re-validate the contest and re-assemble the package.

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

| Write comment?
»
11 years ago, # |
  Vote: I like it +147 Vote: I do not like it

EPIC BOOBS :D

»
11 years ago, # |
  Vote: I like it -60 Vote: I do not like it

i don't like this update :(

»
11 years ago, # |
  Vote: I like it -12 Vote: I do not like it

For codeforces everything is EXTREME!

»
11 years ago, # |
  Vote: I like it -17 Vote: I do not like it

(.) (.)

»
11 years ago, # |
Rev. 2   Vote: I like it +10 Vote: I do not like it

so beautiful updates :) thanks and Happy New Year to all CodeForces Members!

»
11 years ago, # |
  Vote: I like it -35 Vote: I do not like it

what a beautiful girl you are:))))))))))

»
11 years ago, # |
Rev. 2   Vote: I like it +20 Vote: I do not like it

"EPIC BOOBS :D" +97

"(.) (.)" -11

lol. What is this difference!?

»
11 years ago, # |
  Vote: I like it +93 Vote: I do not like it

very bad, everytime i am trying to read the text, the photo on the right is disturbing me and i am not able to read the text. :(

»
11 years ago, # |
  Vote: I like it +16 Vote: I do not like it

oh God.. the thumbnail on chrome for codeforces page just changed to this one... forced to remove it.. ;-)

»
11 years ago, # |
  Vote: I like it -18 Vote: I do not like it

beautiful "Dhaka University Debiting Society" ... :-p

»
11 years ago, # |
  Vote: I like it 0 Vote: I do not like it

boobs and only boobs

»
11 years ago, # |
Rev. 2   Vote: I like it +23 Vote: I do not like it

Hey guys...

It's better to control our selves. :D

This is a programming web-site; not a... :|

;)

»
11 years ago, # |
  Vote: I like it -20 Vote: I do not like it

The comment is hidden because of too negative feedback, click here to view it

»
11 years ago, # |
  Vote: I like it -34 Vote: I do not like it

what will be the next codeforces round ? I hope it will be after September 25 because after then I will have the holiday , but now it is very for me to take the following tests.I don't hope to miss the competition.What's more,you wife is very beautiful!Does Russia has many beautiful ladies like your wife.

»
9 years ago, # |
  Vote: I like it 0 Vote: I do not like it

hi,it seems the ftp is not working now,i want to check some data but just can not login in ftp.

»
5 years ago, # |
  Vote: I like it +1 Vote: I do not like it

I get this error when I try to run contest wizard:

Exception in thread "main" java.lang.ClassNotFoundException: Can't find com.codeforces.contestwizard.Runner.
	at com.codeforces.contestwizard.RemoteClassLoader.findClass(RemoteClassLoader.java:153)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	at com.codeforces.contestwizard.Main.main(Main.java:12)

My Java Version:

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

And I use OSX 10.14.2.

Can anyone help? Or who should I refer?

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Why do you need wizard? Just upload your contest to Polygon (if it's not already there) and do the FTP + contest.xml thing

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I was trying to merge OpenCup scoreboard.

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Does the wizard support xml submission log from Yandex Contest to get correct submission times?

        • »
          »
          »
          »
          »
          5 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          It could parse ejudge scoreboard, I used it here. Didn't tried with Yandex though.

          And I don't know how to manually specify scoreboard files. Is there any method?

          • »
            »
            »
            »
            »
            »
            5 years ago, # ^ |
            Rev. 2   Vote: I like it +8 Vote: I do not like it

            I have a converter [github link] which accepts raw logs from various testing systems and produces contest.dat file, which can be uploaded via FTP or (maybe) just be pasted to Ghosts window at admin page (/gym/NNNNNN/admin)

            How to get raw logs:

            • in Yandex Contest: enter the admin page, press Edit Contest, then on the left tab press External logs (the link will be https://contest.yandex.ru/admin/edit-contest?contestId=NNNNN#external-logs), download log.

            • in Ejudge: go to contest admin page (/cgi-bin/master), press Dump data -> Export runs in XML external format

»
5 years ago, # |
  Vote: I like it -25 Vote: I do not like it

I upvoted this blog for no reason whatsoever.