Submission #1302449

#TimeUsernameProblemLanguageResultExecution timeMemory
1302449aaaaaaaa선물 (IOI25_souvenirs)C++20
21 / 100
13 ms400 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;

void buy_souvenirs(int N, long long P0) {
  //pair<vector<int>, long long> res = transaction(P0 - 1);
  // N, N - 1, N - 2, N - 3, N - 4, .. 1
  if(N == 2){
    transaction(P0 - 1);
    return;
  }
  long long last = P0;
  vector<int> buy(N + 1, 0);
  for(int i = 1; i <= N - 1; ++i){
    assert(buy[i] < i);
    if(buy[i] == i) continue;
    if(i == N - 1){
        for(int j = 1; j <= i - buy[i]; ++j) transaction(last - 1);
        continue;
    }
    pair<vector<int>, long long> res = transaction(last - 2);
    assert((int) res.first.size() > 0);
    for(auto it : res.first) buy[it] += 1;
    if(res.first[0] ^ i){
        for(int j = 1; j <= i - buy[i]; ++j){
            transaction(last - 1);
        }
        last -= 1;
    }else{
        for(int j = 1; j <= i - buy[i]; ++j){
            transaction(last - 2);
        }
        last -= 2;
    }
  }
  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...