Submission #1290280

#TimeUsernameProblemLanguageResultExecution timeMemory
1290280stapanulocu1축제 (IOI25_festival)C++20
5 / 100
51 ms9584 KiB
#include <bits/stdc++.h> using namespace std; struct te { long long p, poz; }; vector<te> p[5]; int c[5]; long long a; vector<int> r; bool solve6(vector<int> &P, vector<int> &T) { for(int i = 0; i < P.size(); ++i) { if(a < ((a - 1LL * P[i]) * (1LL * T[i]))) { return false; } } return false; } vector<int> max_coupons(int A, vector<int> P, vector<int> T) { r.clear(); for(int i =0; i < 5; ++i) { p[i].clear(); c[i] = 0; } for(int i = 0; i < P.size(); ++i) { te st; st.p = P[i]; st.poz = i; p[T[i]].push_back(st); } for(int i = 1; i <= 4; ++i) { sort(p[i].begin(), p[i].end(), [](const te& a, const te& b) { return a.p < b.p; }); } a = A; if(solve6(P, T)) { return r; } while(1) { long long maxN = 0; long long rezz = -1, nr = 0; for(long long i = 1; i <= 4; ++i) { if(c[i] < p[i].size() && a >= p[i][c[i]].p && ((a - p[i][c[i]].p)*i) > maxN) { rezz = p[i][c[i]].poz; maxN = (a - p[i][c[i]].p) * i; nr = i; if(maxN > a) break; } } if(rezz == -1) { break; } c[nr]++; a = maxN; r.push_back(rezz); if(r.size() == P.size()) break; } return r; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...