#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> res;
void solvesub1(int &A, vector<int> &P, vector<int> &T) {
vector<pair<int, int>> vec;
for (int i = 0; i < n; i++) {
vec.push_back({P[i], i});
}
sort(vec.begin(), vec.end());
for (int i = 0; i < n; i++) {
if (A >= vec[i].first) {
A -= vec[i].first;
res.push_back(vec[i].second);
} else {
break;
}
}
}
void solvesub2(int &A, vector<int> &P, vector<int> &T) {
vector<pair<long long, int>> vec;
for (int i = 0; i < n; i++) {
if (T[i] == 2) {
vec.emplace_back(P[i], i);
} else {
vec.emplace_back(1e9 + P[i], i);
}
}
sort(vec.begin(), vec.end());
for (auto [_, i] : vec) {
if (A >= P[i]) {
res.push_back(i);
A = (A - P[i]) * T[i];
}
}
}
void solvesub3(int &A, vector<int> &P, vector<int> &T) {
}
vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
n = T.size();
res.clear();
bool checksub1 = true;
bool checksub2 = true;
for (int i = 0; i < n; i++) {
if (T[i] != 1) checksub1 = false;
if (T[i] > 2) checksub2 = false;
}
if (checksub1) solvesub1(A, P, T);
else if (checksub2) solvesub2(A, P, T);
else solvesub3(A, P, T);
return res;
}
# | 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... |