제출 #1253037

#제출 시각아이디문제언어결과실행 시간메모리
1253037TheScrasse선물 (IOI25_souvenirs)C++20
18 / 100
0 ms412 KiB
#include <bits/stdc++.h>
using namespace std;

#define nl "\n"
#define nf endl
#define ll long long
#define pb push_back
#define _ << ' ' <<

#define INF (ll)1e18
#define mod 998244353
#define maxn 110

#include "souvenirs.h"
#include <utility>
#include <vector>

void buy_souvenirs(int N, long long P0) {
    // subtask 5
    vector<ll> P(N, 0), rem(N, 0);
    iota(rem.begin(), rem.end(), 0);
    P[0] = P0;

    auto trans = [&](ll M) {
        auto [v, rem_money] = transaction(M);

        /* cerr << "trans" _ M << nf;
        for (auto u : v) cerr << u << ' ';
        cerr << nf; */

        for (auto u : v) rem[u]--;
        return pair<vector<int>, ll>{v, rem_money};
    };

    auto [v, rem_money] = trans(P[0] - 1);
    if (v.size() == 2) {
        ll sum = P[0] - 1 - rem_money;
        assert(sum >= 2);
        trans(sum / 2);
    } else {
        P[1] = P[0] - 1 - rem_money;
        trans(P[1] - 1); trans(P[1] - 1);
    }
}
#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...