UCPC 2025 본선에 참가하여 7등을 차지하였다.

Codeforces 레이팅 기준 1위, 예선 압도적 1위를 차지하였기에 1등에 근접한 등수를 예상하고 있었는데, 예상하지 못한 등수를 받아 당황스러웠다. 예선에서 우리 팀 개개인이 압도적인 실력을 가지고 있다고 확인했다고 생각했는데, 왜 이런 결과가 나왔는지는 후에 서술하겠다.

사실 정신적으로 좋지 않아서 후기를 쓰지 않으려 했는데, 나도 망한 대회들의 후기를 보고 얻은 교훈들(Ex: 구현 구체화 안하고 컴 길게 잡지 않기)이 많기에 후기를 작성하려고 한다. 내가 중요한 대회(icpc 2025 wf, seoul)를 실력대로 친다면 나중에 이 후기를 재밌게 볼 것 같기도 하다. 대회가 끝나고 온라인 상에서 얘기했던 많은 사람들을 뵈었는데, 상태가 좋지 못해 제대로 인사드리지 못한 것 같아 후회된다.
원래 대회가 끝이 나면 기억이 생각보다 빨리 사라져서, 최대한 빨리 후기를 작성하려고 노력한다. 그런데 이번 대회는 출국 일정 때문에 지금 외국에 나와있고, 이제서야 후기를 작성할 수 있게 되었다. 그렇기에 대회 전반의 내용이 정확하지 않을 수 있다. 하지만 이례적으로 대회 종료 후 팀원 및 다른 사람들과 대회가 망한 이유/살릴 수 있는 방법에 대해 매우 많이 이야기 했고, 이런 내용들도 담으려고 한다.
대회가 시작하고 E랑 I(1틀)을 빠르게 맞았다. C를 보던 나는 C가 no solve문제지만, 매우 쉽다는 확신을 가지고 있었다. k가 prime일 때만 의미가 있다, 답이 n/2 이상이다, 차이의 소인수만 보면 된다, 차이 쌍을 많이 안 봐도 된다 등 다양한 관찰을 가지고 팀원과 이야기 하였더니, 랜덤이라는 단어가 입에서 나오는 순간 C도 바로 풀었다. 이렇게 팀원끼리 소통이 잘 되었던 점은 긍정적이었다. 3 solve였고, 이 때 부터 프리즈(240분) 전 까지 거의 모든 시점에서 1등이었다.(아마)
C의 풀이가 나온 이후 나는 A D H B 중 한 문제를 푸려고 노력중이었는데, 4문제 중 마지막으로 B 문제를 읽자마자 풀이가 보여 A D H는 kizen에게 그대로 넘겼다. platter가 F의 틀린 풀이를 2번 낸 후에, 내가 B를 구현하였는데 나도 틀렸다. kizen이 A를 짜는 동안 21분의 눈 디버깅 이후 index 실수였다는 것을 깨닫고(;;), kizen의 A와 함께 ac를 받았다. 실수를 왜 이렇게 늦게 찾은지는 잘 모르겠다. 대회 시작 94분째 되는 시점이었다.
문제는, 우리 팀원이 너무 강했다는 것이다. 내가 B를 디버깅하는 동안 platter는 F G K의 풀이를 냈고, kizen은 A(를 풀이를 낸 후 ac를 받았고) D H의 풀이를 냈다. 대회 시작 1시간 반 만에 10문제의 풀이가 나온 것이다. 그리고 platter가 G의 풀이를 약간 수정하는 시간을 고려하면 대회 시작 100분째에 10문제 모두의 풀이가 정확하게 나왔다. 이게 왜 문제인지는 후에 서술하겠지만, 일단 나는 남은 3문제인 J L M의 풀이를 내려고 노력하였다. 솔직히 조금 웃겼던게, 나는 B 코드를 열심히 보고 있는데 옆에서 5분마다 한 번 씩 새로운 문제의 풀이가 나왔다고 선언했다. 과장이 아니라 진짜 5분마다 한 번 씩 저래서 진짜 어지러웠다.
남은 시간은 200분, 남은 구현은 5개. 여기서 재앙이 시작되었다. 일단 나는 J L M의 풀이를 1시간 동안 내지 못했다. J는 정해가 내가 모르는 flow 알고리즘으로써 내가 풀이를 낼 수 있는 문제가 아니었고(사실 문제를 제대로 시도하지도 않았다), L은 조금 봤지만 준 루비 문제기에 못 풀었다. M도 L만큼 시간 투자를 했던 것 같은데 머리가 안 좋아서 못 풀었다. 다이아 4~3이라고 한다.(;;) 그 동안 팀원들의 상황은 다음과 같았다. 139분째에 platter가 K를 4번 틀린 뒤 ac를 받았다. 그냥 사소한 실수를 4개나 했다고 한다. Kizen이 H의 코드를 167분째에 완성했지만, wa를 받았다. platter가 G에 6000B짜리 코드를 짜고 1 wa후 210분째에 정답을 받았다. F, D, H가 남았지만 D(aho corasic+pst)를 짜는게 현실적으로 불가능할 것 같아 D는 버리기로 하였다. 나는 어느 순간 내가 문제를 풀어도 짤 시간이 없다는 것을 깨닫고 kizen의 H 디버깅을 도와주러 갔다.
매우 큰 문제는, F의 코드 및 H의 코드가 둘 다 9000B를 넘어섰다는 것이다. 컴퓨터는 프린터 고장 이슈로 이분할 코딩을 하고 있었고, kizen은 H를 랜덤 스트레스 돌리고 있었고, platter는 그냥 정신이 나가고 있었다. 양 쪽에서 400줄 짜리 코드를 디버깅하고 있는데 그냥 정신이 안 나갈 수가 없다. 진짜 극도로 예민해져서 대회장 주변에서 들리는 모든 소리가 짜증나기 시작할 정도였다. 솔직히 말하면 우리 팀 앞 쪽 팀 중 한 명이 대회 시작 부터 심하게 시끄러웠어서 좀 짜증났었는데, 그 팀의 진행 상황을 실시간으로 알 수 있을 정도로 시끄럽게 하시길래 진짜 매우 크게 화가 났었다. 아마 오프라인 팀 대회가 처음이고 너무 신나셔서 그러셨나 보다.

대회 종료 직전에 F 및 H 둘 다 틀린 점을 계속 찾고 있었고, 번갈아 제출 및 수정을 하고 있었다. 그 유명한 Newtrend의 294299를 재현하는 꿈도 꿨었다. platter의 F는 설명하면 길지만, 결국 대회 종료 2분 후 수정한 코드를 검수진에게 전달하고 ac를 받았다는 사실을 확인하였다. kizen의 H는 대회 종료가 얼마 지나지 않아 스트레스에서 반례가 나오지 않음을 확인했는데, 검수진에게 전달했더니 wa라고 한다. 이건 왜 그런지 잘 모르겠다. F는 프린터 고장으로 프린트 되지 못한 수정된 부분에서 오류가 생겼기에 절대 잡을 수 없는 오류였다. 대회가 끝나고 컴퓨터로 코드를 보니 바로 잡을 수 있었다. 뭐 프린터가 정상이었다면 1솔브를 더 했겠지만 다른 팀들도 마찬가지였을 것이다.
일단 대회가 망한 가장 큰 원인을 꼽자면, kizen이 H를 짜는/디버깅하는 것에 컴퓨터를 2시간 넘게 썼다는 사실이다. H는 7솔브 이상 중 우리 팀만 못 풀었다. 만약에 H를 말렸더라도 280분 쯤에라도 풀었다면, F를 풀고 9솔을 하는 것은 기정 사실이었기에 H를 가장 큰 원인으로 꼽을 수 밖에 없다. 끝나고 다같이 이야기 하며 이유를 생각해보니 kizen이 구현이 매우 어려운 풀이를 냈고, 쓸데 없는 부분에서 코드가 매우 길어졌기 때문이었다. 그냥 구현이 어렵지 않은 풀이가 있었다. kizen은 진짜 정말 잘하고 지금 까지 팀 대회 및 연습에서 너무 좋은 모습을 보여줬지만, kizen이 신은 아니다. 즉 어쩌다가 한 문제에서 크게 말릴 수도 있는 것은 같은 인간이라면 당연한 것이다. 가장 안정적이고 실력이 높고 구현력도 좋은 사람이지만 당연히 말릴 수 있다. 그러나 이것을 방지하는 것은 팀원의 역할이다. 그리고 platter은 F를 구현 및 디버깅하고 있었기 때문에 결국 내 역할이다. 난 여기서 무엇을 했어야 했을까?
일단 첫 번째 시나리오는, B를 틀리지 말았어야 했다. B를 빠르게 풀고, kizen이 A를 구현할 동안 H의 구체화 및 쉬운 풀이를 도와줬어야 했다. 이랬다면 H에서 말리는 일은 일어나지 않았을 것이다. B를 틀렸다면, platter가 K를 짤 동안 H를 조금이라도 봐줬어야 했다. 팀원 두 명의 어깨에 5개의 구현 복잡한 문제가 눌려있었는데, 내가 조금이라도 덜어서 없앴어야 했다. 사실 대회 200분 남은 시점에 5문제면 다 풀 것이라고 생각하는 것도 이상하지 않기에 두 결론 모두 결과론적인 면이 있다.
팀원 및 다른 사람들과 대회가 망한 이유 및 해결방법에 대해서 매우 많은 이야기를 했는데, 결국 아무도 명확한 해답을 내지 못했다. 그냥 잘 모르겠다. 사실 H를 말릴 사람이 잡은 것이 운이 안 좋았던 것이 아닐까? H를 그냥 버렸다면 D포함 9솔브는 하지 않았을까? 최소 8솔브라도? 아니 모두가 H를 푸는데 버리는 것도 말이 안 되지 않나? 우리 팀 전체가 우리 팀의 실력을 과대평가 한 것 이 아닐까? 욕심 부리지 말고 max 10솔 선에서 대회를 끊고, 만약에 JLM중 풀리는 문제가 있다면 그 때 가서 그 문제를 잡는 것이 맞지 않았을까? platter과 나는 대참사를 방지하기 위해 무엇을 했어야 했을까? 나는 이 대회에서 한 게 무엇일까?(ㅋㅋ) 이 모든 질문들을 전혀 모르겠다. 다른 중요한 대회들에서도 이러면 안 되기 때문에 천천히 두고 잘 생각해봐야겠다.
그래도 ps하는 친구들을 만나서 뒷풀이도 하고, 오늘 다른 친구들을 만나서 해외에서 노니 대회 관련 스트레스는 거의 없어졌다. 천천히 업솔빙하고 배울 점만 남기고 기억에서 지워야겠다. leinad2 화이팅. 1등한 big shot 축하해요 월파에서도 같이 메달 ㄱㄱ!