Submission #1269313

#TimeUsernameProblemLanguageResultExecution timeMemory
1269313sula2Festival (IOI25_festival)C++20
0 / 100
39 ms6452 KiB
#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 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...