Overview
This is a brief record of my first exposure to ACM and ICPC through the “easy course” ACM-ICPC Algorithms and Programming, which I took to earn two credits.
During the course, I learned a lot and met a master named c1ampy.
Thoughts
Through this experience, I learned what ACM is and got a glimpse of competitive programming.
I was initially ambitious about achieving something in this field. However, considering the time investment required and my own priorities, I decided to give it up.
This is my short journey with ACM.
diary
3.2
After talking with an upperclassman named Izumi Sagiri, I decided to take this course to earn the credits.
I learned that everyone must participate in the university contest, and if you qualify for the finals, you can get 20% of your course grade from it (which basically guarantees the credits). So I invited c1ampy to form a team. To my surprise, he agreed.
From then on, I started learning the basics of C++, getting a quick overview of STL, as well as topics like Data Structures, Graph Theory, Dynamic Programming, and some CS mathematics.
3.6
Learned the basics of C++ (mainly STL).
3.10
c1ampy brought in another strong teammate, fanjunwen, and our team was officially formed.
3.13
c1ampy realized that as a beginner, I couldn’t quickly master full implementations. So instead, he focused on explaining common algorithms at a high level.
This way, I could still contribute ideas during the competition.
3.16
We decided on our team name:
「想不出队名还要去问 LLM 的屑队」
3.27
We participated in the warm-up contest.
Oops! c1ampy noticed there was an interactive problem and taught me how to approach that type of question.
3.28
The preliminary contest began!
- 08<55>55> —
c1ampyasked me to start from the beginning of the problem set, whilefanjunwenstarted from the end. - 09<00>00> — I found Problem A too difficult, so I switched to B.
- 09<20>20> — I decided to solve B using recursion.
- 09<31>31> — Boom! Time Limit Exceeded. I changed my approach and used memoization (DFS + cache).
- 10<08>08> — Nice! Accepted. Then I moved on to the problem assigned by
c1ampy. - 10<20>20> — I realized I could use binary search for the case of 2n, but didn’t know how to handle 2n+1. I told
c1ampy, and he solved it.
After that, I didn’t contribute much. But c1ampy coded a lot and carried us into the finals.
Congratulations! Not only did I get 20% of the course grade, but I also got the chance to visit another UESTC campus and spend a whole day there — basically just having fun. Haha~
4.5 — The Final
We made it to the finals.
It was, without exaggeration, one of the happiest days in this short ACM journey.
Before everything began, c1ampy told me that a formal ACM/ICPC-style contest usually runs from around 9<00>00> to 14<00>00>. That means you get a few intense hours to think with a short window to eat.
So, in preparation for both the contest and the inevitable hunger, I bought some McDonald’s. (And yes, I still firmly believe KFC should just hand over egg tarts to McDonald’s and retire from that competition.)
After picking up our contest T-shirts and checking in, we sat down.
The finals were about to begin.
Timeline
-
11<30>30> —
c1ampystarted setting up the coding environment, completely ignoring the rule:
“Do not touch the mouse or keyboard before 11<55>55>.”
Honestly, how is anyone supposed to get ready in just five minutes? -
12<00>00> — We split our strategy.
I started from the beginning of the problem set, whilefanjunwenattacked from the end. -
12<30>30> — I had an idea for Problem C.
I shared it with them, and they asked me to double-check its correctness. -
12<40>40> — I became reasonably confident in my approach.
Not perfectly rigorous—but convincing enough.
Thenfanjunwencasually found an O(1) solution. -
12<50>50> — Problem C: accepted.
While reviewing submissions, I realized we had also solved Problem I.
That gave me a burst of confidence, and I moved on. -
13<30>30> — After hitting a wall on several problems, I finally gave in and took a break to eat.
Survival first. -
14<00>00> — Problem A looked approachable.
I committed to it.
One hour later, I gave up… (It was one of the hardest problems in the set.) >_< -
~15<00>00> — Problem F looked easy.
But we just couldn’t get it accepted.
Something felt wrong.
I went throughc1ampy’s code line by line—
and it looked absolutely correct. -
16<00>00> — The scoreboard froze.
And we still hadn’t solved F.
At that point, I decided:
if I couldn’t spot the bug directly, I would simulate inputs manually and compare outputs to hunt down the edge case. -
16<30>30> — It worked.
Pen-and-paper debugging saved us.
We finally fixed the issue. -
16<55>55> — I felt like I had done everything I could.
Meanwhile,c1ampykept pushing on Problem J…
but in the end, we had to let it go. -
17<00>00> — Contest over.
-
17<10>10> — Editorial session.
And yes—Problem A was exceedingly brutal. -
17<30>30> — Rank reveal and awards ceremony:
- 1 problem → Third Prize
- 3 problems → Second Prize
- 5 problems → First Prize

Aftermath
It was a final full of pressure, frustration, breakthroughs, and small moments of clarity.
Not perfect.
Not easy.
But deeply satisfying.
And to end the day, we treated ourselves to a bowl of Japanese noodles.
Absolutely worth it.
If this article helped you, please share it with others!
Some information may be outdated




