제출 #1251704

#제출 시각아이디문제언어결과실행 시간메모리
1251704Cebrayil09Festival (IOI25_festival)C++20
5 / 100
43 ms8108 KiB
#include "festival.h" #include <bits/stdc++.h> using namespace std; #define pii pair < long , long > #define eb emplace_back #define pb push_back #define ll long long #define fi first #define se second const ll inf = 1e18; vector<int> max_coupons(int aaa, vector<int> p, vector<int> t) { vector<vector<pii>> v(3); ll a = aaa; for(int i = 0;i < p.size();i++) { v[t[i]].eb(p[i], i); } sort(v[1].begin(), v[1].end()); sort(v[2].begin(), v[2].end()); vector<ll> pref(v[1].size()); for(int i = 0;i < v[1].size();i++) { pref[i] = v[1][i].fi; if(i > 0) pref[i] += pref[i-1]; } int ub = upper_bound(pref.begin(), pref.end(), a) - pref.begin(); int mx = ub, f = ub, s = 0; for(int i = 0;i < v[2].size();i++) { if(a < v[2][i].fi) break; a -= v[2][i].fi; a *= 2; if(a < 0) break; ub = upper_bound(pref.begin(), pref.end(), a) - pref.begin(); if(ub + i + 1 > mx) { mx = ub + i + 1; f = ub; s = i+1; } } vector<int> ans; for(int i = 0;i < s;i++) ans.eb(v[2][i].se); for(int i = 0;i < f;i++) ans.eb(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...