제출 #1264999

#제출 시각아이디문제언어결과실행 시간메모리
1264999imarn축제 (IOI25_festival)C++20
5 / 100
85 ms12716 KiB
//#include "festival.h"
#include<bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("avx2")
#define ll long long
#define ld long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define plx pair<ll,int>
#define f first
#define s second
#define pb push_back
#define all(x) x.begin(),x.end()
#define vi vector<int>
#define vvi vector<vi>
#define ub(x,i) upper_bound(all(x),i)-x.begin()
#define lb(x,i) lower_bound(all(x),i)-x.begin()
#define sz(x) (ll)x.size()
#define cd complex<double>
#define t3 tuple<ll,ll,ll>
using namespace std;
const int mxn=2e5+5;
int n;
std::vector<int> max_coupons(int A, std::vector<int> P, std::vector<int> T) {
    priority_queue<pll,vector<pll>,greater<pll>>qr[5];
    n=P.size();priority_queue<pll,vector<pll>,greater<pll>>ql;
    for(int i=0;i<n;i++)ql.push({P[i],i});
    while(!ql.empty()&&ql.top().f<=A){
        auto [p,t]=ql.top();ql.pop();
        qr[T[t]].push({p,t});
    }ll cur=A;
    vector<int>ans;
    while(1){
        ll mem=-1,rs=0;
        if(!qr[1].empty()&&qr[1].top().f<=cur){
            if(rs<(cur-qr[1].top().f))rs=cur-qr[1].top().f,mem=1;
        }
        if(!qr[2].empty()&&qr[2].top().f<=cur){
            if(rs<(cur-qr[2].top().f)*2)rs=(cur-qr[2].top().f)*2,mem=2;
        }
        if(!qr[3].empty()&&qr[3].top().f<=cur){
            if(rs<(cur-qr[3].top().f)*3)rs=3*(cur-qr[3].top().f),mem=3;
        }
        if(!qr[4].empty()&&qr[4].top().f<=cur){
            if(rs<(cur-qr[4].top().f)*4)rs=(cur-qr[4].top().f)*4,mem=4;
        }
        if(mem==-1)break;
        else ans.pb(qr[mem].top().s);qr[mem].pop();cur=rs;
    }
    return ans;
}
/*int main(){
    vector<int> x=max_coupons(9, {6,5},{2,3});
    for(auto it : x)cout<<it<<" ";
}*/

#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...