제출 #1257592

#제출 시각아이디문제언어결과실행 시간메모리
1257592Canuc80kSouvenirs (IOI25_souvenirs)C++20
0 / 100
1 ms412 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; std::pair<std::vector<int>, long long> transaction(long long M); ll res[101], cnt[101], tmp[101]; void buy_souvenirs(int n, long long p) { auto [v, x] = transaction(3 * p / 4); memset(res, 0x3f, sizeof res); res[0] = p; res[1] = 3 * res[0] / 4 - x; for (auto x: v) cnt[x] ++; for (int i = 2; i < n; i ++) { res[i] = min({res[i], res[i - 2] / 2, 3 * res[i - 1] / 4}); for (int j = cnt[i] + 1; j <= i; j ++) { tmp[i - 1] = res[i - 1]; tmp[i] = res[i]; for (int k = i + 1; k < n; k ++) tmp[k] = tmp[k - 1] / 2; auto [v, x] = transaction(res[i]); for (auto x: v) { cnt[x] ++; if (tmp[x] < res[i]) res[i] -= tmp[x]; } // cout << "Buy: " << res[i] << endl; // for (auto x: v) cout << x << ' '; cout << endl; // cout << "Rem: " << x << endl; } } }
#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...