Egor's blog

By Egor, history, 4 weeks ago, In English

Hello!

I am introducing a new tool for competitive programming—submitter. It does just that, submits your solution to supported online judges and displays results, all from the comfort of your command line.

Prerequisites

You would need rust and docker

Installation

cargo install --git https://github.com/EgorKulikov/submitter

Usage

submitter <task url> <language> <path to solution>

Supported sites

At the moment the following is supported:

  • Codeforces (unless Cloudflare would want to click you on the box, I cannot fool it yet)
  • Codechef
  • Yandex Contest
  • AtCoder
  • Universal Cup
  • Luogu (no support for changing language, language of the last submit is used)

Full text and comments »

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

By Egor, history, 5 weeks ago, In English

There is a new version of rust helper, that has new features as well as some reorganization of how it works. Please refer to the changelog for what you are needing to do to update your project to work with it, a new version of the example project is currently under review and should be merged shortly.

What's new:

  • Autosubmit. Currently supported sites are codeforces*, atcoder, hackerrank, yukicoder, kattis and dmoj. Most of it done through third-party tools and scripts, if you know any more such CLI tools, feel free to mention them in the comments below.
  • Copy to clipboard. For sites that are not supported with autosubmit code instead is copied to the clipboard for ease of submitting.
  • Support for importing enum variants and code written in lib/mod files. This should make inlining code from crates not specifically written with using this tool in mind much easier.
  • If you reimport a task that you already imported (and had not yet archived), it should open that task so you would not have to search it.
  • Separate folder for tasks so that it won't be lost between libs, archives, templates etc.
  • Archiving system that should require much fewer keyboard inputs for usual workflows.

Thanks a lot to qwerty787788 for helping with this.

*Codeforces autosubmit currently not working due to cloudflare. If you know any working CLI tool — let me know

Full text and comments »

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

By Egor, history, 4 months ago, In English

Changes relevant to competitive programming:

  • New sort implementations Both the stable and unstable sort implementations in the standard library have been updated to new algorithms, improving their runtime performance and compilation time. Additionally, both of the new sort algorithms try to detect incorrect implementations of Ord that prevent them from being able to produce a meaningfully sorted result, and will now panic on such cases rather than returning effectively randomly arranged data. Users encountering these panics should audit their ordering implementations to ensure they satisfy the requirements documented in PartialOrd and Ord.

  • Duration::abs_diff stabilized

Full text and comments »

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

By Egor, history, 2 years ago, In English

During Codechef Starters 55 when I solved non-scoring problems I've got following helpful suggestion from copilot:

Seems oddly specific, right? So if you use copilot during contests you should disable following option:

Full text and comments »

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

By Egor, history, 3 years ago, In English

Rust 1.58 was just released (rust releases new version every 6 weeks). The only feature relevant to competitive programming is this:

Captured identifiers in format strings

Format strings can now capture arguments simply by writing {ident} in the string. Formats have long accepted positional arguments (optionally by index) and named arguments, for example:

println!("Hello, {}!", get_person());                // implicit position  
println!("Hello, {0}!", get_person());               // explicit index  
println!("Hello, {person}!", person = get_person()); // named  

Now named arguments can also be captured from the surrounding scope, like:

let person = get_person();  
// ...  
println!("Hello, {person}!"); // captures the local `person`  

This may also be used in formatting parameters:

let (width, precision) = get_format();  
for (name, score) in get_scores() {  
  println!("{name}: {score:width$.precision$}");  
}  

Format strings can only capture plain identifiers, not arbitrary paths or expressions. For more complicated arguments, either assign them to a local name first, or use the older name = expression style of formatting arguments.

This feature works in all macros accepting format strings. However, one corner case is the panic! macro in 2015 and 2018 editions, where panic!("{ident}") is still treated as an unformatted string -- the compiler will warn about this not having the intended effect. Due to the 2021 edition's update of panic macros for improved consistency, this works as expected in 2021 panic!.

Full text and comments »

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

By Egor, history, 3 years ago, In English

Hello!

I'd like to introduce new tool to use rust in competitive programming. Tool support parsing tasks (by using Competitive companion, testing on samples and additional tests, generating full source file when you use your library and generating unit tests based on tasks you solved.

You can checkout example repository with instructions on how to use from here. Huge thanks to qwerty787788 for extracting helper to a separate project

To use with Competitive companion you need to set custom ports in plugin settings to include 4244.

Sample interaction:

Full text and comments »

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

By Egor, history, 4 years ago, In English

I will stream TCO finals tomorrow on my channel

I would not interact with chat for obvious reasons and there would be 10 mins delay

Full text and comments »

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

By Egor, history, 4 years ago, In English

I would stream my participation in TCO semifinals tomorrow on my channel

There would be 10 minutes delay as per topcoder request and for obvious reasons I would not be able to read chat during the contest

Full text and comments »

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

By Egor, history, 4 years ago, In English

Hello!

Top 8 of Lockout Championship is scheduled for today

I will stream my matches. You can find my stream here, it would also be shown in the streams panel on the right. For obvious reasons I would not interact with chat during rounds, but I can answer your questions in between rounds

Full text and comments »

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

By Egor, history, 4 years ago, In English

I've got plans for at least 2 streams this week

Today I will stream Educational Round 92 15 minutes after it ends

Tomorrow I'll stream Codeforces Round #660 same time

Join me on my twitch channel. I would try to explain my thoughts during the contest and will answer questions from chat. You can ask any questions, not necessarily ones about these contests.

UPD: stream started

UPD2: stream ended, here's VOD

UPD3: unfortunately I have to cancel stream today, hope there will be one next week

Full text and comments »

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

By Egor, history, 4 years ago, In English

Tomorrow I am going to stream Codeforces Round #659 and plan to start the stream shortly after the round ends on my twitch channel. I would try to explain my thoughts during the contest and will answer questions from chat. You can ask any questions, not necessarily ones about this contest.

I also plan to record topcoder SRM #788, I am not yet sure if I'll just put it on youtube with no commentaries or stream it over week end (or maybe we can try to watch both tomorrow on 2x speed, we'll see)

UPD: stream started

UPD2: finished with SRM, on to codeforces round

UPD3: VOD

Full text and comments »

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

By Egor, history, 4 years ago, In English

Today I am going to stream Codeforces Round #656 and plan to start the stream 5 minutes after the round ends on my twitch channel. I would try to explain my thoughts during the contest and will answer questions from chat. You can ask any questions, not necessarily ones about this contest

UPD: stream is going live

UPD2: stream ended, here it is on youtube

Full text and comments »

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

By Egor, 4 years ago, In English

I am going to try new format — I prerecorded my (rather poor) participation in topcoder open round 2a today and will stream it in about 2 hours from now on my twitch channel. I would try to explain my thoughts during the contest and will answer questions from chat. Hope to see you all!

UPD: stream started

Full text and comments »

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

By Egor, history, 7 years ago, translation, In English

Hi!

Once again, I collected as much info as I could from open and not so open sources and now I need your help to recetify any errors and omissions

Here what I have atm: link

Do not hestitate to either send me PM or comment this post

Last update 16.04 13:07 CET

Full text and comments »

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

By Egor, history, 8 years ago, In English

Hello!

World Finals is near us once again and I am trying to collect data about participants once again. This year we are able to collect your Codeforces and TopCoder handles through icpc.baylor.edu profiles. If you'd log in into the site and go Profile -> Social Media you'd be able to enter your handles. I would kindly request everyone to do just that.

I'll publish data I gathered in a couple of days, if you notice any errors I'd appreciate if you post about them either in comments to this post or in personal messages

UPD: Preliminary data

Last update: 22.05 10:45 MT

Data will no longer be pulled from Baylor database, if you want to update something — fire me personal message

Full text and comments »

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

By Egor, history, 9 years ago, In English

Dear WF contestants.

In order to correctly get your data for ICPC Live translation I kindly ask to update your codeforces profile name to the same name listed on MyICPC in your profile. If your TC handle differs from Codeforces one, I would be glad if you send me your TC handle/put it in comments section

Good luck in Phuket

UPD: here's pretty raw data I accumulated so far. If you want to add your handles for TC/CF or correct any error feel free to comment this post/send me message

UPD2: More human readable form is now available (note, link changed) and includes all latest changes as well as data on much more personal competitions

Full text and comments »

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

By Egor, history, 9 years ago, In English

Contest is finished, you may discuss problems

My screencast

Full text and comments »

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

By Egor, history, 9 years ago, In English

I would really appreciate any new ideas of what new features to add

I would also appreciate donations: Yandex.Money, PayPal

Seems like no one tried beta verion — I would really appreciate feedback

4.4.3b3

  • All supported sites are updated
  • New Google Code Jam is now supported
  • You can now inline any file (feature best used for DCJ, which is not here this year, but I hope will return)

4.4.1b2

Support for interactive tasks added. By default you would interact using user input, but you can write your own interractor


4.3.1

Task format is changes to JSON. I would recomment backing up your project before updating


4.2.2


4.2.1

  • New Code Jam site support
  • Fixes

4.1.8

  • All parsers are up to date
  • GCJ and Kattis are now only parsable from Chrome extension

4.1.5

  • Added parsing for AtCoder and CSAcademy
  • Fixed parsing for HackerRank
  • Fixed enums in switches

4.1.3

  • Various fixes for code generation

4.1.2

  • Cojac version update. If you use Cojac for your own configurations update agent parameters as follows:
-Cints -Clongs -Ccasts -Cmath
  • Cleanup
  • Switched to Java 1.8
  • Timus parser fix
  • Kattis parser fix
  • Include all Kattis sites

4.1.1

HackerEarth support


4.0.11

Fixed issue with using method as functional interface


4.0.10

Fix for USACO parsing. Currently on beta channel

Full text and comments »

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

By Egor, 10 years ago, In English

We would appreciate all and any feedback. You can find full footage of this year ICPC Live here. You can leave comments here or contact me through PM.

Full text and comments »

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

By Egor, 10 years ago, In English

image

Follow World Finals Live on Tumblr

Create your own ICPC cheering party, join one in your city or just follow ACM ICPC World Finals Live

image

Full text and comments »

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

By Egor, 10 years ago, In English

Follow live updates on tumblr

Full text and comments »

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

By Egor, 10 years ago, In English

image

The last but not the least interesting team is ITMO University's team 1.

ITMO has most championship titles, 5, out of 19 finals they participated in. They've got 10 Gold medals total, 1 Silver and 1 Bronze.

This year team consist of 2 Bronze Medalist from 2014, Borys and Artem, and World Champion from 2013, Gennady. Team is on first place in OpenCup Standings, won numerous contest this year and universally regarded as favorite to win World Finals, are coached by Andrey Stankevich.

Gennady Korotkevich (TC: 3794, CF: 3407) is one of the most honored coders ever. ACM ICPC Champion in 2013, TCO Winner in 2014, GCJ Winner in 2014, IOI Gold Medalist for a whooping 6 years (2007-2012), that's in addition to SIlver (2006) and many more achievements like Facebook Hacker Cup wins.

Borys Minaiev (TC: 2760, CF: 2776) won Bronze in last year Finals, was TopCoder Open Semifinalist in 2014, Facebook Hacker Cup Finalsit in 2015 and got 3rd place in Kotlin Challenge in 2014.

Artem Vasilyev (TC: 2612, CF: 2545) got World Finals Bronze in 2014 and was KROK Finalist in 2013.

It would be really unlikely for ITMO not to win Gold Medals, I have their chances at 99%. I think their chances to win is about 75%.

Create your own ICPC cheering party, join one in you city or just follow ACM ICPC World Finals Live

image

Full text and comments »

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

By Egor, 10 years ago, In English

image

This year my alma mater is represented by team Moscow SU Tapirs.

Moscow State University has a long history at World Finals. 19 appearences, 4 Gold medals (all of them — 2nd places), 1 Silver and 7 Bronzes. Moscow SU is also 2 times champions of Europe.

Tapirs team came 2nd last year in Yekaterinburg in intense battle with St. Petersburg State University. In NEERC 2014 they came second as well, while losing to ITMO University team only on penalty time. Moscow SU is currently 3rd in OpenCup standings with one stage win. They had bested ITMO team on 2 more stages. Anton Pankratiev is team coach.

Gleb Evstropov (TC: 2405, CF: GlebsHP 2622) got 3rd in this year Facebook Hacker Cup. He also won Silver medal in IOI 2010 and was Russian Code Cup finalist last year.

Victor Omelyanenko (TC: 2531, CF: TeaPot 2687) got 2nd place on ACM ICPC World Finals last year with Gleb and Mikhail.

Mikhail Pyaderkin (TC: 2428, CF: meshanya 2550) won IOI Gold in 2010 as well as placed 2nd in Vekua Cup personal contest in 2012.

image

This team got only stronger since last year. Their chance to win Gold are at least 80%, while they had shoy at Championship as well, with about 15% chance.

Last team to look at will be ITMO University team.

Create your own ICPC cheering party, join one in you city or just follow ACM ICPC World Finals Live

image

Full text and comments »

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

By Egor, 10 years ago, In English

image

Today let’s talk about The University of Tokyo team !#$%&()*+-./:;<=>?@[]^_`{|}~. University of Tokyo has long history of World Finals participations, this would be 13th time. They won one Gold, one Silver and 2 Bronzes, and 2 members of this year team won Gold in 2013.

They won regional contests in Tokyo and Kuala Lumpur, only team in Asia this year with such achievement. Team is currently on 17th place in OpenCup standings, although they skipped several stages and not always had optimal line-up. Tomoyuki Kaneko coaching them.

Kensuke Imanishi (TC: 2625, CF: wrong 2298) won 2 Silver medals in IOI (2010 and 2011) and was GCJ Finalist in 2013, that's beside his Gold in ACM ICPC Finals.

Shogo Murai (TC: 3017, CF: semiexp 2507) has 3 IOI Golds (2010-2012) and target on TopCoder to boot.

Makoto Soejima (TC: 3468, CF: rng_58 2849) is really a legend. He is one of only 4 people to win both GCJ (2011) and TCO (2010, 2011) and currently is TopCoder admin. Beside that he has Silver in IOI (2008, 2009) and Gold in World Finals. image

While this team has really strong line up it's results are inconsistent. I'd give them 70% for Gold and about 5% to win.

Tomorrow we will look at team from my alma mater, Moscow State University.

Create your own ICPC cheering party, join one in you city or just follow ACM ICPC World Finals Live

image

Full text and comments »

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

By Egor, 10 years ago, In English

image

Second team to look at is University of Zagreb

Once again, this third appearance of Zagreb’s team at World Finals and both in 2008 and last year teams got Silver medals. Stjepan Glavina and Ivan Katanic both participated in 2014 Finals.

Team decisively won CERC 2014 with 10 solved problems to second place’s 8. They participated in 3 stages of OpenCup, not very successfully though, and with 15 points are currently in 73rd place. Team also finished 5th in elimination round of Deadline 24. Zagreb’s coach is Kresimir Malnar.

Stjepan Glavina (TC: 2620, CF: 2509) won Gold in IOI 2009 and Silver in 2010.

Ivan Katanic (TC: 2704, CF: 2613) also has 2 IOI medals — Gold in 2011 and Silver in 2010.

Gustav Matula (TC: 2179, CF: 2160) had got his IOI Gold in 2011.

This team as about on par with Lviv, so I predict about 60% chance to get Gold medals and 1% for win.

Check back tomorrow as we’d look at University of Tokyo team.

Create your own ICPC cheering party, join one in you city or just follow ACM ICPC World Finals Live

Full text and comments »

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