Submission #1288616

#TimeUsernameProblemLanguageResultExecution timeMemory
1288616alexrana2626Souvenirs (IOI25_souvenirs)C++20
25 / 100
12 ms400 KiB
#include "souvenirs.h" #include <utility> #include <bits/stdc++.h> using namespace std; void buy_souvenirs(int N, long long P0) { pair<vector<int>, long long> res; vector<long long> v; if (N == 2) { transaction(P0 - 1); return; } if (N == 3) { res = transaction(P0 - 1); long long x = res.second; if (res.first.size() == 2) { transaction((P0 - x - 1)/2); return; } else { long long P1 = P0 - x - 1; transaction(P1 - 1); transaction(P1 - 1); return; } } if (P0 == N) { for (int i = 0; i < N; i++) { int j = i; while (j--) { transaction(N - i); } } return; } { vector<long long> P(N); P[0] = P0; set<int> found; res = transaction(P0 - 1); for (int id : res.first) found.insert(id); for (int i = 1; i < N; i++) { long long base = P[i - 1]; long long next = -1; pair<vector<int>, long long> res2; for (long long d = -2; d <= 2; d++) { long long price = base + d; if (price < 1) continue; res2 = transaction(price - 1); for (int id : res2.first) { if (!found.count(id)) { found.insert(id); next = price; break; } } if (next != -1) break; } if (next == -1) next = base; P[i] = next; } 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...