Submission #1255960

#TimeUsernameProblemLanguageResultExecution timeMemory
1255960AvianshFestival (IOI25_festival)C++20
32 / 100
65 ms9408 KiB
#include "festival.h"
#include <bits/stdc++.h>

using namespace std;

bool comp(array<long long,3>&a, array<long long,3>&b){
    if(a[0]*a[1]*b[1]+b[0]*b[1]==b[0]*a[1]*b[1]+a[0]*a[1]){
        return a[0]<b[0];
    }
    return a[0]*a[1]*b[1]+b[0]*b[1]<b[0]*a[1]*b[1]+a[0]*a[1];
}

vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
    int n = P.size();
    array<long long,3>arr[n];
    for(int i = 0;i<n;i++){
        arr[i]={P[i],T[i],i};
    }
    sort(arr,arr+n,comp);
    vector<int>ans;
    long long curr = A;
    bool all = 0;
    for(int i = 0;i<n;i++){
        long long temp = (curr-arr[i][0])*arr[i][1];
        if(temp<0){
            //bad
            continue;
        }
        curr=temp;
        ans.push_back(arr[i][2]);
        if(temp>1e15){
            //basically inf now can but everything.
            all=1;
            break;
        }
    }
    if(all){
        set<int>done;
        for(int i : ans){
            done.insert(i);
        }
        for(int i = 0;i<n;i++){
            if(done.find(i)==done.end()){
                ans.push_back(i);
            }
        }
    }
    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...