Submission #1254854

#TimeUsernameProblemLanguageResultExecution timeMemory
1254854AbdullahIshfaqSouvenirs (IOI25_souvenirs)C++20
100 / 100
12 ms412 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
#define ll long long
const int N = 100;
ll prc[N], tot[N];
int n;
void recur(long long p){
  auto [l, r] = transaction(p);
  for (auto i : l){
    tot[i]++;
  }
  while (l.size() > 1){
    if (prc[l.back()]){
      r += prc[l.back()];
      l.pop_back();
    }
    else{
      recur((p - r) / l.size());
    }
  }
  prc[l[0]] = p - r;
  if (prc[l[0] + 1] == 0 and l[0] != n - 1){
    recur(prc[l[0]] - 1);
  }
}
void buy_souvenirs(int n, ll p)
{
  ::n = n;
  recur(p - 1);
  for(int i = 1; i < n; i++){
    while(tot[i] < i){
      transaction(prc[i]);
      tot[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...