#include <bits/stdc++.h>
using namespace std;
vector<int> max_coupons(int a, vector<int> p, vector<int> t) {
int n = p.size();
vector<int> ind[3];
for (int i = 0; i < n; i++) {
ind[t[i]].push_back(i);
}
for (int i = 1; i <= 2; i++)
sort(ind[i].begin(), ind[i].end(), [&](int x, int y) { return p[x] < p[y]; });
vector<long long> pr{ 0 };
for (int i : ind[1])
pr.push_back(pr.back() + p[i]);
long long tokens = a;
int ptr = pr.size() - 1;
while (pr[ptr] > tokens) ptr--;
int c1 = ptr, c2 = 0, j = 0;
for (int i : ind[2]) {
tokens = min((long long)1e18, (tokens - p[i])*t[i]);
if (tokens < 0) break;
while (pr[ptr] > tokens) ptr--;
while (ptr+1 < pr.size() && pr[ptr+1] <= tokens) ptr++;
j++;
if (j + ptr > c1 + c2) {
c1 = ptr;
c2 = j;
}
}
vector<int> ans;
for (int i = 0; i < c2; i++)
ans.push_back(ind[2][i]);
for (int i = 0; i < c1; i++)
ans.push_back(ind[1][i]);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |