#include <bits/stdc++.h>
#ifdef EVAL
#include "souvenirs.h"
#endif
using namespace std;
#define endl "\n"
#define int long long
#define int32 int32_t
#define pii pair<int, int>
#define ff first
#define ss second
#define entire(x) (x).begin(), (x).end()
#ifndef EVAL
vector<int> TheP, TheC;
pair<vector<int32>, int> transaction (int m){
vector<int32> cur;
for (int i = 0; i < (int) TheP.size(); i++){
if (TheP[i] <= m) cur.push_back(i), m -= TheP[i], TheC[i]++;
} return pair<vector<int32>, int>{cur, m};
}
#endif
void buy_souvenirs (int32 N, int p0){
int n = N, cur = 1;
vector<int> cnt(n, 0), a(n, p0);
for (;; cur <<= 1){
auto [chosen, m] = transaction(cur);
if (m != cur) { cur -= m; a[n-1] = cur; cnt[n-1]++; break; }
}
for (int i = n-2; i > 0; i--){
int p = a[i+1] + 1;
auto [chosen, m] = transaction(p);
if (m == 1) cnt[i+1]++, a[i] = p + 1;
else cnt[i]++, a[i] = p;
}
for (int i = 0; i < n; i++) for (; cnt[i] < i; cnt[i]++) transaction(a[i]);
}
#ifndef EVAL
int32 main(){
ios::sync_with_stdio(false); cin.tie(nullptr);
int n; cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
sort(entire(a)); reverse(entire(a));
TheP = a; TheC.resize(n, 0); buy_souvenirs(n, a[0]);
bool isgood = true;
for (int i = 0; i < n; i++){
if (TheC[i] != i) isgood = false;
}
if (isgood) cout << "OK" << endl;
else cout << "FUCK" << endl;
return 0;
}
#endif
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |