Submission #1302311

#TimeUsernameProblemLanguageResultExecution timeMemory
1302311Valaki2축제 (IOI25_festival)C++20
24 / 100
64 ms10280 KiB
#include "festival.h" #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define mp make_pair #define pii pair<int, int> #define fi first #define se second int n; vector<vector<pii > > v; vector<signed> max_coupons(signed A, vector<signed> P, vector<signed> T) { n = P.size(); v.resize(5); for(int i = 0; i < n; i++) { v[T[i]].pb(mp(P[i], i)); } for(int i = 1; i <= 4; i++) { sort(v[i].begin(), v[i].end()); } vector<int> vec; for(pii p : v[1]) { vec.pb(p.fi); if(vec.size() > 1) { vec[vec.size() - 1] += vec[vec.size() - 2]; } } int money = A; pii best = mp((upper_bound(vec.begin(), vec.end(), money) - vec.begin()), 0); int idx = 0; for(pii p : v[2]) { idx++; if(money < p.fi) { break; } money = (money - p.fi) * 2; if(money > 1e17) { money = 1e17; } best = max(best, mp(idx + (upper_bound(vec.begin(), vec.end(), money) - vec.begin()), idx)); } vector<signed> ans; best.fi -= best.se; for(int i = 0; i < best.se; i++) { ans.pb(v[2][i].se); } for(int i = 0; i < best.fi; i++) { ans.pb(v[1][i].se); } return ans; }
#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...