Submission #1254288

#TimeUsernameProblemLanguageResultExecution timeMemory
1254288vpinx선물 (IOI25_souvenirs)C++20
39 / 100
12 ms412 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;

extern pair<vector<int>, long long> transaction(long long m);

void buy_souvenirs(int n, long long p0) {
    if (n == 2) auto [l, r] = transaction(p0 - 1);
    else if (n == 3) {
        auto [l, r] = transaction(p0 - 1);
        if (l.size() == 1) {
            for (int i = 0; i < 2; i++) auto [l2, r2] = transaction(p0 - r - 2);
        }else {
            long long sum = p0 - r - 1;
            auto [l2, r2] = transaction(sum / 2 - ((sum & 1) ^ 1));
        }
    }else {
        vector<long long> p(n, -1LL), q(n, 0LL);
        p[0] = p0;
        
        for (int i = 1; i < n; i++) {
            auto [l, r] = transaction(p[i - 1] - 1);
            for (int j = 0; j < l.size(); j++) q[l[j]]++;

            if (l.size() == 1) {
                if (r == 0) p[i] = p[i - 1] - 1;
                else p[i] = p[i - 1] - 2;
            }else p[i] = p[i - 1] - 2;
        }
        
        for (int i = 1; i < n; i++) {
            while (q[i] < i) {
                auto [l, r] = transaction(p[i]);
                q[i]++;
            }
        }
    }
}
#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...