Submission #1286468

#TimeUsernameProblemLanguageResultExecution timeMemory
1286468georgeckito선물 (IOI25_souvenirs)C++20
25 / 100
13 ms332 KiB
#include <bits/stdc++.h> #include "souvenirs.h" using namespace std; #define ll long long void buy_souvenirs(int N, long long P0) { if (N == 2) { std::pair<std::vector<int>, long long> res = transaction(P0 - 1); } else if (N == 3) { std::pair<std::vector<int>, long long> res = transaction(P0 - 1); if (res.first.size() == 1) { long long p1 = P0 - 1 - res.second; // a > b > c // b+c+x=a-1 => c = a-1-x-b std::pair<std::vector<int>, long long> res1 = transaction(p1 - 1); transaction(p1 - res1.second - 1); } else { long long x = P0 - 1 - res.second; transaction((x - 1) / 2); } } else if(P0 == N) { for (int i = 1; i < N; i++) { for (int j = 0; j < i; j++) { transaction(N - i); } } } else { int cnt1 = N-1; int ans[N]; ans[0] = P0; bool is1 = false; for(int i = 1; i < N; i++) { if(i == N-1 && is1) continue; auto tt = transaction(ans[i-1]-1); // cout << 1 << " " << ans[i-1]-1 << endl; ans[i] = ans[i-1] - tt.second - 1; if(tt.first.size() == 2) cnt1--, ans[i]--, is1 = true; for(int j = 0; j < i-1; j++) transaction(ans[i]); } while(cnt1--) transaction(1); } 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...