제출 #1320367

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

int p[105];
int cnt[105];
int last = -1;

void solve(int x) {

  auto [v,res] = transaction(x);
  if (x == res) return;
  for (auto x:v) cnt[x]++;
  int c = x - res;
  int n = v.size();

  while (n > 1) {
    solve(c/n);
    while (v.back() >= last) {
      n--;
      c -= p[v.back()];
      v.pop_back();
    }
  }

  p[v.back()] = c;
  if (c != 1 && v.back() > last+1) solve(c-1);
  last = v.back();
}

void buy_souvenirs(int N, long long P0) {
  std::pair<std::vector<int>, long long> res = transaction(3);
  p[0] = P0;
  solve(P0-1);
  for (int i = 0; i < N; i++) {
    while (cnt[i] < i) transaction(p[i]);
  }
  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...