Submission #1284508

#TimeUsernameProblemLanguageResultExecution timeMemory
1284508LuvidiFestival (IOI25_festival)C++20
24 / 100
55 ms9644 KiB
#include "festival.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pll pair<ll,ll>
#define fs first
#define sc second

std::vector<int> max_coupons(int C, std::vector<int> p, std::vector<int> t) {
    ll c=C;
    int n=p.size();
    vector<pll> a[3];
    for(int i=0;i<n;i++)a[t[i]].push_back({p[i],i});
    sort(a[1].begin(),a[1].end());
    sort(a[2].begin(),a[2].end());
    for(int i=1;i<a[1].size();i++)a[1][i].fs+=a[1][i-1].fs;
    int bs=-1,id;
    for(ll i=0,s=C;i<=a[2].size();i++){
        if(i){
            s=min(2*(s-a[2][i-1].fs),(ll)1e15);
            if(s<0)break;
        }
        pll tt={s+1,0};
        int c=(lower_bound(a[1].begin(),a[1].end(),tt)-a[1].begin())+i;
        if(bs<c){
            id=i;
            bs=c;
        }
    }
    vector<int> ans;
    for(int i=0;i<id;i++)ans.push_back(a[2][i].sc);
    for(int i=0;i<bs-id;i++)ans.push_back(a[1][i].sc);
    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...