Submission #1251110

#TimeUsernameProblemLanguageResultExecution timeMemory
1251110aryan12Souvenirs (IOI25_souvenirs)C++20
39 / 100
11 ms400 KiB
#include "souvenirs.h"
#include <utility>
#include <vector>

void buy_souvenirs(int N, long long P0) {
  if(N != 3) {
    long long cur = P0, last_used = 0;
    for(int i = 1; i < N; i++) {
      if(i != N - 1) {
        std::pair<std::vector<int>, long long> res = transaction(cur - 1);
        if(res.first.size() == 2 || res.second == 1) {
          cur = cur - 2;
          if(res.first.size() == 2) {
            last_used += 1;
          }
        }
        else {
          cur = cur - 1;
        }
        for(int j = 0; j < i - 1; j++) {
          transaction(cur);
        }
      }
      else {
        for(int j = last_used; j < i; j++) {
          transaction(cur - 1);
        }
      }
    }
  }
  else {
    std::pair<std::vector<int>, long long> res = transaction(P0 - 1);
    if(res.first.size() == 1) {
      long long val = P0 - 1 - res.second;
      transaction(val - 1);
      transaction(val - 1);
    }
    else {
      long long val_used = P0 - 1 - res.second;
      transaction(val_used / 2);
    }
  }
  // std::pair<std::vector<int>, long long> res = transaction(3);
  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...