Submission #1250135

#TimeUsernameProblemLanguageResultExecution timeMemory
1250135kaloyanSouvenirs (IOI25_souvenirs)C++20
25 / 100
12 ms412 KiB
#include <bits/stdc++.h> using namespace std; const long long MAXN = 100 + 1; long long counter[MAXN], values[MAXN]; std::pair<std::vector<int>, long long> transaction(long long M); void buy_souvenirs(int N, long long P0){ if(N == 1) { return; } else if(N == 2) { transaction(P0 - 1); } else if(N == 3) { pair<vector<int>, long long> p = transaction(P0 - 1); if(p.first.size() == 1) { long long first_val = (P0 - 1) - p.second; transaction(first_val - 1); transaction(first_val - 1); } else { long long total_sum = (P0 - 1) - p.second; transaction(total_sum / 2); } } else { long long prev = P0; values[0] = P0; for(int i = 1 ; i < N ; ++i) { pair<vector<int>, long long> p = transaction(prev - 1); for(int idx : p.first) { counter[idx]++; } if(p.first.size() == 1) { prev -= 1; values[i] = prev; if(p.second) values[i] -= (p.second - 1); } else { prev -= 2; values[i] = prev; } } for(int i = 1 ; i < N ; ++i) { while(counter[i] < i) { transaction(values[i]); counter[i]++; } } } }
#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...