Submission #1312497

#TimeUsernameProblemLanguageResultExecution timeMemory
1312497MunkhErdene축제 (IOI25_festival)C++17
0 / 100
54 ms10020 KiB
#include "festival.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define _ << " " <<
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define ull unsigned long long
#define lll __int128
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define BlueCrowner ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define FOR(i, a, b) for (ll i = (a); i < (b); i++)
#define FORD(i, a, b) for (ll i = (a); i >= (b); i--)
const ll mod = 1e9 + 7;
const ll mod1 = 998244353;
const ll naim = 1e9;
const ll max_bit = 60;
const ull tom = ULLONG_MAX;
const ll MAXN = 100005;
const ll LOG = 20;
const ll NAIM = 1e18;
const ll N = 2e6 + 5;
const ll inf = 1e16;
std::vector<int> max_coupons(int A, std::vector<int> P, std::vector<int> T) {
    ll n = P.size();
    vector<pair<ll, ll>> c[5];
    FOR(i, 0, n) {
        c[T[i]].pb({P[i], i});
    }
    sort(all(c[1]));
    sort(all(c[2]));
    vector<ll> sum(c[1].size() + 1, 0);
    FOR(i, 1, c[i].size() + 1) {
        sum[i] = sum[i - 1] + c[1][i - 1].ff;
    }
    ll a = 0;
    ll b = upper_bound(all(sum), A) - sum.begin() - 1;

    ll cur = A;
    FOR(i, 0, c[2].size()) {
        cur = (cur - c[2][i].ff) * 2;
        cur = min(cur, inf);
        
        if (cur < 0)break;
        ll j = upper_bound(all(sum), cur) - sum.begin() - 1;

        if (i + 1 + j > a + b) {
            a = i + 1;
            b = j;
        }
    }

    vector<int> res;
    FOR(i, 0, a) {
        res.pb(c[2][i].ss);
    }
    FOR(i, 0, b) {
        res.pb(c[1][i].ss);
    }
    return res;
}

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