Submission #1251704

#TimeUsernameProblemLanguageResultExecution timeMemory
1251704Cebrayil09Festival (IOI25_festival)C++20
5 / 100
43 ms8108 KiB
#include "festival.h"
#include <bits/stdc++.h>

using namespace std;

#define pii pair < long , long >
#define eb emplace_back
#define pb push_back
#define ll long long
#define fi first
#define se second

const ll inf = 1e18;

vector<int> max_coupons(int aaa, vector<int> p, vector<int> t) {
    vector<vector<pii>> v(3);

    ll a = aaa;

    for(int i = 0;i < p.size();i++) {
        v[t[i]].eb(p[i], i);
    }

    sort(v[1].begin(), v[1].end());
    sort(v[2].begin(), v[2].end());

    vector<ll> pref(v[1].size());
    for(int i = 0;i < v[1].size();i++) {
        pref[i] = v[1][i].fi;

        if(i > 0) pref[i] += pref[i-1];
    }

    int ub = upper_bound(pref.begin(), pref.end(), a)   - pref.begin();

    int mx = ub, f = ub, s = 0;
    for(int i = 0;i < v[2].size();i++) {
        if(a < v[2][i].fi) break;

        a -= v[2][i].fi;
        a *= 2;

        if(a < 0) break;

        ub = upper_bound(pref.begin(), pref.end(), a) - pref.begin();

        if(ub + i + 1 > mx) {
            mx = ub + i + 1;
            f = ub;
            s = i+1;
        }
    }

    vector<int> ans;

    for(int i = 0;i < s;i++) ans.eb(v[2][i].se);
    for(int i = 0;i < f;i++) ans.eb(v[1][i].se);

    return ans;
}
#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...