Submission #1250654

#TimeUsernameProblemLanguageResultExecution timeMemory
1250654enerelt14Souvenirs (IOI25_souvenirs)C++20
0 / 100
2 ms412 KiB
#include "souvenirs.h" #include <utility> #include <algorithm> #include <array> #include <bitset> #include <cassert> #include <chrono> #include <climits> #include <cmath> #include <complex> #include <cstring> #include <functional> #include <iomanip> #include <iostream> #include <map> #include <numeric> #include <queue> #include <random> #include <set> #include <stack> #include <vector> using namespace std; void buy_souvenirs(int N, long long P0) { long long price[N]; int num[N] = {0}; price[0] = P0; price[N - 1] = 1; num[N - 1] = 1; while(true) { pair<vector<int>, long long> res = transaction(price[N - 1]); if(!res.first.empty()) break; price[N - 1]++; } for(int i = N - 2; i; i--) { pair<vector<int>, long long> res = transaction(min(price[i + 1] * 2, price[0] - 1)); price[i] = res.second; for(auto x: res.first) { num[x]++; if(x != i) price[i] += price[x]; } price[i] = min(price[i + 1] * 2, price[0] - 1) - price[i]; } for(int i = 1; i < N; i++) { for(int j = 0; j < i - num[i]; j++) transaction(price[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...