Submission #1285552

#TimeUsernameProblemLanguageResultExecution timeMemory
1285552SmuggingSpunSouvenirs (IOI25_souvenirs)C++20
35 / 100
13 ms400 KiB
#include "souvenirs.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; const int lim = 105; int n, cnt[lim]; ll P[lim]; void MyLinh(ll money){ vector<int>item; ll remain; tie(item, remain) = transaction(money); for(int& i : item){ cnt[i]++; } while(item.size() > 1){ if(P[item.back()] != -1){ remain += P[item.back()]; item.pop_back(); } else{ MyLinh((money - remain) / item.size()); } } P[item[0]] = money - remain; if(item[0] != n - 1 && P[item[0] + 1] == -1){ MyLinh(P[item[0]] - 1); } } void buy_souvenirs(int N, ll p0){ if((n = N) == 2){ transaction(p0 - 1); return; } if(n == 3){ vector<int>item; ll remain; tie(item, remain) = transaction(p0 - 1); if(item.size() == 1){ transaction(p0 - remain - 2); } return; } memset(cnt, 0, sizeof(cnt)); memset(P, -1, sizeof(P)); MyLinh((P[0] = p0) - 1); for(int i = 1; i < n; i++){ for(int j = i; j > cnt[i]; j--){ transaction(P[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...