제출 #1250055

#제출 시각아이디문제언어결과실행 시간메모리
1250055tranvinhhuy2010선물 (IOI25_souvenirs)C++20
25 / 100
12 ms412 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; ll n, cnt[105], p[105]; ll adu_calculate(ll s, ll k) { s += k*(k-1)/2; return s/k; } void adu_build(ll money) { auto [a, remain] = transaction(money); ll k = a.size(); ll sum = money - remain; if (k==0) return; for (ll i : a) cnt[i]++; if (k==1) { p[a[0]] = sum; if (a[0]<n-1 && p[a[0]+1]==0) adu_build(sum-1); } else { ll x = adu_calculate(sum, k); if (p[a[0]+1]==0) adu_build(x-1); while (a.size()>1) { sum -= a.back(); a.pop_back(); } p[a[0]] = sum; } } void adu_complete() { for (ll i=1; i<n; i++) { while (cnt[i]<i) { transaction(p[i]); cnt[i]++; } } } void buy_souvenirs(int N, ll P0) { n = N; adu_build(P0-1); adu_complete(); }
#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...