Friday, October 8, 2021

[My Experience] CPC COMPFEST 13 2021

     COMPFEST is one of the largest IT events in Indonesia which is hosted by university students of Universitas Indonesia. They host seminars and competitions which are joined by people around Indonesia. I joined the Competitive Programming Competition hosted as a part of COMPFEST. There are two divisions of the competitive programming competition: Junior and Senior. 


     The junior division is designated for school students. Most of the participants (including me) are high school students, but there are several middle school students. In fact, a primary student also participated in the junior division. The competition is in IOI style, as a typical simulation for the upcoming National Science Olympiad of Informatics. On the other hand, the senior division is designated for university students which is in ICPC style. From here, the junior division will be refered as JCPC (Junior Competitive Programming Competition), and the senior division will be refered as SCPC (Senior CPC).

[Now the formal introduction is done I'll be informal now lmao]

    Anyways, I have joined JCPC three times consecutively. The first contest was when I was a specialist in Codeforces, so you can say that I was relatively "weak". Well yes, I was, and I got the 10th or 11th rank. Nothing special at all, I just joined for experience as technically I'm new to competitive programming (actually that happened in my second year of CP, but please ignore my first year I don't feel I learnt anything that year :D). I got 4th place in my second contest, with 3 years of experience and a master rating in Codeforces. A very big improvement in a span of one year due to national training, I guess.

Me in my first competition. The second and third competition is held online due to the pandemic :(
    

    So in this blog I would be sharing my experience in my third JCPC participation. Well, not just JCPC participation :)


    The head PIC of this year's CPC is a friend of mine, Hocky. We occasionally talk in a discord server with many other people who is (or was) interested in competitive programming. It was around March 2021 when Hocky joked (okay he probably was serious but I took it as a joke, I'll explain later why) about a "call for tasks" form for CPC. That was during a discussion meeting for TROC #20, a "regular" (isn't regular, just depends on the coordinator and the availability of problemsetters) open contest in Indonesia team's local online judge. Maybe I'll write about TROC in another blog, so stay tuned :D.

    Back to topic, Hocky offered another friend of mine Rama to give C4T (call fo(u)r tasks). Well I guess at the point of competition Rama would be attending university outside Indonesia so he is eligible. But he also offered me, a high schooler and actually going to attend Junior CPC, to C4T. So yeah definitely a joke right??

    Fast forward a few months to probably late July or early August. Hocky promotes his C4T form again in the main discord server (we have a designated server for TROC discussions for obvious reasons). I jokingly asked if I can problemset since I don't really have a full set for a solo contest, but also have decent (read: "bad") problems. He seriously answered yes. Actually interested, I gave him a private chat just to make sure if he was joking. He was actually serious o_o.

    Now you might be thinking: JCPC participant, but also a problemsetter? Very sus move Maxi. WELL IN A WAY IT WAS, but I just felt the need to publish my problems somewhere. I find it hard to just keep a problem for a month or year, I just want a problem to be published almost immediately. Please excuse my impatience :D Anyways it was agreed that my problems are only to be published in the senior bugabooset and I will not take part in any testcase making, editorial making, testing supervising, etc since I am also a participant. I talked this with the two main PIC of the competition: Hocky and Steven.

    In the end, I submitted 5 problems. I only consider one of them to be good (and indeed it was good) while the others are below standard. Initially Hocky planned to use all 5, but having 5 problems in a 10-13 problem ICPC style contest authored by a participant? Definitely too much. So, I requested only three of them to be used. In the actual contest, the problems are problem G, L, and M. After that, I didn't receive any info about my problems apart from the information that it is confirmed that all three problems will be used. Well, if I were to receive other information that would make me very sussy.

    With my story of problemsetting SCPC done, it is time to tell the experience of me as a participant in JCPC.


    There are two parts of the competition: the qualification round and the final round. The qualification round was hosted at 11th of September, while the final round was hosted recently at 2nd of October.

    I can't really say I did well in the qualification round. There were 6 problems to be done in 5 hours IOI style. You can refer to the problems here. For non-Indonesian readers, you can find a button which changes the language to English, if it isn't in English already. If you want to solve them, please solve them first, as I might write out some main ideas for each problem (after all there is no official editorial [yet????]). 

    I literally bricked and only got my first AC after one hour despite the problems being relative easy for a master rank after further inspection. My first AC is problem D, an interactive problem which its solution is just binary search. My second AC is problem F, a data structure problem which its states are relatively classic, since the topic of "longest zig-zag subsequence" is relatively googleable. After that AC, I felt more warmed up and ACed the rest of the easy problems, B and C. During the scoreboard freeze, I had 400 with a blank unsubmitted A and E, while other contestants had various scores in each task due to the partial scoring. It do be menacing if one sees an IOI style scoreboard with only 100s and -s. 

    The final hour is very stressful. I implemented an 80 score solution for A but for some reason it WAed with only a score of 11. Panicking, I manually solve the easier subtasks one by one until I get a score of 52. Eventually, it was found out that my 80 score solution was correct but I misimplemeneted. Sadge. E, on the other hand, is an output-only problem, which I saved for the last few minutes to take the easier solvable-by-hand subtasks.

    Unfortunately, I did not save the frozen scoreboard, but I still have the final scoreboard of the qualification round screenshoted.

P.S. Vietnam flag for no reason, other people below top 10 changed their flags so I decided to join\

    The testers said that they did not expect the rank 1 score of the qualification round to be this small, and I have to admit, they are correct. Just imagine the number of points I can save if I did not brick the first three hours. Anyways the point of the qualification round is to just proceed to the final round, which I did.

    A week before the final round, I felt that I did not feel warmed up because of midterms in school, so I decided to do some problems. In the end, I decided to do the ICPC WF invitational mirror in codeforces with other two friends. Didn't really help anything though, I only solved the second easiest problem. With me feeling unprepared, I just went for it. What's the worst that can happen? Oh wait, a 3 hour brick yeah definitely wouldn't repeat that.
    
    Again, you can see the problems here. There won't be many spoilers though, as an official editorial from the codeforces SCPC mirror already exists.

    Gladly I didn't though. I ACed the two easiest problems, A and B in the first hour, and getting the generous 79 point subtask in problem C in the second hour. The author claims that the final subtask should worth at least 40 points, and I kinda agree. The solution development is very far and the last subtask is very hard to get. In fact, it is rated 3000 in codeforces after its debut in the SCPC mirror. Anyways 279 in the first two hours is very ideal, compared to only having 100 points in the qualification round.

    Just a reminder to never celebrate early, as look what happens when one does :)

    I tried to take the first subtask of F to clarify my understanding of the problem. I got WA and tried to fix but to no avail. I ate a whole hour for a 0 in F. It turns out that the issue was just a simple if. Anyways I didn't found that on contest so I moved to E. E was some tree problem, I don't really like these problems and I am bad at them so I don't really expect to rack up much points here. I took the bruteforce solution for 14 points, but as I code I thought of a full solution for the problem. After I submitted the 14 point bruteforce, I coded for the full solution for an hour, but after failing the sample testcase, I realised my solution is 100% wrong. Dang, now I have wasted 2 hours. I rushed to the output only problem D and get as much points as I can. So there it was, a failure.

    In the end, I got second place. Wish I got that subtask in F, I would've continued thinking to the second subtask (since I already have the idea), but the past is the past. Lesson learnt: not bricking in the first two hours does not mean not bricking in the next two hours. Also learnt that before a competition, sleep for at least 9 hours because it is what it is.

    

Final scoreboard


Me dying in awarding session

    After the contest I enjoyed the ruined SCPC mirror scoreboard in codeforces. Here is the contest portal. It's fun to see people failing at my 2400 rated problem M and ended up having only 8 teams ACing it.

    That's the conclusion to my story in CPC COMPFEST 2021. It is definitely a fun and unique experience playing a weird role of both a participant and a problemsetter. I can't join JCPC next year as I will graduate from high school and go to university. I would still find time to problemset for SCPC if the future head PIC allows it :)

    Thank you for reading :D

No comments:

Post a Comment

[My Experience] CodinGame Spring Challenge 2022 (Zero to Legend)

(Early warning that there are spoilers related to my solutions of the challenge itself. If you are interested to solve it, I recommend doing...