제출 #1252901

#제출 시각아이디문제언어결과실행 시간메모리
1252901TIN선물 (IOI25_souvenirs)C++20
39 / 100
12 ms400 KiB
#include "souvenirs.h" #include <utility> #include <vector> void buy_souvenirs(int N, long long P0) { // std::pair<std::vector<int>, long long> res = transaction(3); std::pair<std::vector<int>, long long> res; if (N == 2) { res = transaction(P0 - 1); return; } if (N == 3) { // P0 > x > y long long x, y; res = transaction(P0 - 1); if ((int) res.first.size() == 1) { x = P0 - 1 - res.second; res = transaction(x - 1); res = transaction(x - 1); } else { long long sum = P0 - 1 - res.second; // x + y = sum // y * 2 < sum long long mnX = sum / 2 + 1; res = transaction(mnX - 1); } return; } std::vector<long long> p(N, 0); std::vector<int> cnt(N, 0); p[0] = P0; for (int i = 1; i < N; i++) { res = transaction(p[i - 1] - 1); cnt[i]++; p[i] = p[i - 1] - 1; if ((int) res.first.size() > 1 || res.second > 0) p[i]--; if ((int) res.first.size() > 1) cnt[res.first[1]]++; while (cnt[i] < i) { res = transaction(p[i]); ++cnt[i]; } } return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...