제출 #1251753

#제출 시각아이디문제언어결과실행 시간메모리
1251753Zicrus축제 (IOI25_festival)C++20
5 / 100
63 ms8380 KiB
#include <bits/stdc++.h> #include "festival.h" using namespace std; typedef long long ll; typedef pair<ll, ll> pll; #define all(v) v.begin(), v.end() constexpr ll inf = 1ll << 62ll; mt19937 mt(34056237); ll _ = 0; vector<int> max_coupons(int A, vector<int> price, vector<int> type) { ll n = price.size(); vector<priority_queue<pll>> coups(4+1); for (ll i = 0; i < n; i++) { coups[type[i]].push({-price[i], i}); } vector<int> res; while (true) { ll best = -1; ll r1 = -1; if (coups[1].size()) r1 = (A + coups[1].top().first) * 1; ll r2 = -1; if (coups[2].size()) r2 = (A + coups[2].top().first) * 2; ll r3 = -1; if (coups[3].size()) r3 = (A + coups[3].top().first) * 3; ll r4 = -1; if (coups[4].size()) r4 = (A + coups[4].top().first) * 4; best = max({r1, r2, r3, r4}); if (best < 0) break; if (r1 == best) { res.push_back(coups[1].top().second); coups[1].pop(); A = r1; continue; } if (r2 == best) { res.push_back(coups[2].top().second); coups[2].pop(); A = r2; continue; } if (r3 == best) { res.push_back(coups[3].top().second); coups[3].pop(); A = r3; continue; } if (r4 == best) { res.push_back(coups[4].top().second); coups[4].pop(); A = r4; continue; } } return res; } #ifdef TEST #include "grader.cpp" #endif
#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...