Submission #1251502

#TimeUsernameProblemLanguageResultExecution timeMemory
1251502vietbachleonkroos2326Festival (IOI25_festival)C++20
32 / 100
62 ms6076 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;

vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
    int N = P.size();
    vector<int> v1, v2;
    const ll BIG = 1e18;
    
    
    for (int i = 0; i < N; ++i) {
        (T[i] == 1 ? v1 : v2).push_back(i);
    }
    
    
    sort(v2.begin(), v2.end(), [&](int a, int b) {
        return (ll)P[a] * T[a] * (T[b] - 1) < (ll)P[b] * T[b] * (T[a] - 1);
    });
    
    sort(v1.begin(), v1.end(), [&](int a, int b) {
        return P[a] < P[b];
    });
    
    
    ll tokens = A;
    vector<int> result;
    
    
    for (int i : v2) {
        if (tokens >= (ll)P[i]) {
            tokens = min((tokens - (ll)P[i]) * T[i], BIG);
            result.push_back(i);
        }
    }
    
    
    for (int i : v1) {
        if (tokens >= (ll)P[i]) {
            tokens -= (ll)P[i];
            result.push_back(i);
        }
    }
    
    return result;
}
#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...