제출 #1312506

#제출 시각아이디문제언어결과실행 시간메모리
1312506MunkhErdene축제 (IOI25_festival)C++17
24 / 100
52 ms9764 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 = 1e18; 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[1].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...