제출 #1257460

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

vector<long long> P;
vector<int> cnt;

void update(vector<int> &ls) {
    for (int x : ls) cnt[x]++;
}

void buy_souvenirs(int N, long long P0) {
    // pair<vector<int>, long long> res = transaction(3);
    P.resize(N);
    P[0] = P0;
    cnt.resize(N);

    // for (int i = 1; i < N; i++) {
    //     pair<vector<int>, long long> res = transaction(P[i-1]-1);
    //     update(res.first);
    //     if (res.first.size() > 1 || res.second > 0) {
    //         P[i] = P[i-1]-2;
    //     }
    //     else P[i] = P[i-1]-1;
    // }

    // for (int i = 1; i < N; i++) {
    //     for (int j = cnt[i]+1; j <= i; j++) transaction(P[i]);
    // }

    pair<vector<int>, long long> res = transaction(P0-1);
    if (res.first.size() == 0) {
        P[1] = P0 - 1 - res.second;
        transaction(P[1]-1);
        transaction(P[1]-1);
    }
    else {
        pair<vector<int>, long long> res2 = transaction((P0-1-res.second)/2);
        assert(res2.first.size() == 1);
    }

    return;
}
#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...