제출 #1254495

#제출 시각아이디문제언어결과실행 시간메모리
1254495vpinx축제 (IOI25_festival)C++20
5 / 100
43 ms5560 KiB
#include "festival" #include <bits/stdc++.h> using namespace std; #define all(v) (v).begin(), (v).end() vector<int> max_coupons(int a, vector<int> p, vector<int> t) { vector<pair<int, int>> t1, t2; for (int i = 0; i < p.size(); i++) { if (t[i] == 1) t1.push_back({p[i], i}); else t2.push_back({p[i], i}); } sort(all(t1)); sort(all(t2)); for (int i = 1; i < t1.size(); i++) t1[i].first += t1[i - 1].first; int idx = -1, cur = a, ans = upper_bound(all(t1), make_pair(a, 0)) - t1.begin(); for (int i = 0; i < t2.size(); i++) { if (cur < t2[i].first) break; cur = (cur - t2[i].first) * 2; int cur_val = (upper_bound(all(t1), make_pair(cur, 0)) - t1.begin()) + i + 1; if (cur_val > ans) { ans = cur_val; idx = i; } } vector<int> v; int cur_ans = a; for (int i = 0; i <= idx; i++) { cur_ans = (cur_ans - t2[i].first) * 2; v.push_back(t2[i].second); } int cur_idx = 0; while (cur_idx < t1.size()) { if (cur_ans < t1[cur_idx].first) break; v.push_back(t1[cur_idx++].second); } return v; }
#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...