Submission #1283930

#TimeUsernameProblemLanguageResultExecution timeMemory
1283930janson0109Souvenirs (IOI25_souvenirs)C++20
25 / 100
14 ms1884 KiB
#include "souvenirs.h" #include <bits/stdc++.h> #define F first #define S second #define lol ios::sync_with_stdio(false);cin.tie(NULL); typedef long long ll; typedef long double ld; using namespace std; const ll M = 1000000007; void process(vector<int> seq, ll sum, vector<ll> &P, vector<ll> &cnt) { vector<int> v; for(auto & x : seq) { if(P[x] == -1) v.push_back(x); else sum -= P[x]; } ll k = v.size(); if(k == 0) return; if(k == 1) { P[v[0]] = sum; return; } auto res = transaction(sum / k); for(auto & x : res.F) cnt[x]++; process(res.F, sum / k - res.S, P, cnt); process(v, sum, P, cnt); } void buy_souvenirs(int N, long long P0) { vector<ll> P(N,-1), cnt(N,0); P[0] = P0; for(ll i=1; i<N; i++) { if(P[i] != -1) continue; auto res = transaction(P[i-1] - 1); for(auto & x : res.F) cnt[x]++; process(res.F, P[i-1] - 1 - res.S, P, cnt); } for(ll i=0; i<N; i++) for(ll j=cnt[i]; j<i; j++) transaction(P[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...