#include <bits/stdc++.h>
using namespace std;
vector<int> max_coupons(int a, vector<int> p, vector<int> t) {
int n = p.size(), c = 0, z = -1, d = 0, j = 0;
vector<int> l[3];
for (int i = 0; i < n; i++) {
l[t[i]].push_back(i);
}
for (int i = 1; i <= 2; i++)
sort(l[i].begin(), l[i].end(), [&](int x, int y) { return p[x] < p[y]; });
vector<long long> s{ 0 };
for (int i : l[1])
s.push_back(s.back() + p[i]), c++, z++;
long long x = a;
while (s[z] > x) z--, c--;
for (int i : l[2]) {
x = min((long long)1e18, (x - p[i])*t[i]);
if (x < 0) break;
while (s[z] > x) z--;
while (z+1 < s.size() && s[z+1] <= x) z++;
j++;
if (j + z > c + d)
c = z, d = j;
}
while (l[2].size() > d) l[2].pop_back();
for (int i = 0; i < c; i++)
l[2].push_back(l[1][i]);
return l[2];
}
# | 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... |