Submission #1250765

#TimeUsernameProblemLanguageResultExecution timeMemory
1250765flashmtSouvenirs (IOI25_souvenirs)C++20
39 / 100
12 ms412 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>
#ifdef LOCAL
#include "Debug.h"
#else
#define debug(...) 42
#endif
using namespace std;

pair<vector<int>, long long> buy(long long coins)
{
  auto [ids, rem] = transaction(coins);
  return {ids, coins - rem};
}

void buy_souvenirs(int n, long long p0) {
  if (n == 2)
  {
    buy(p0 - 1);
    return;
  }

  if (n == 3)
  {
    auto [ids, cost] = buy(p0 - 1);
    if (size(ids) == 2) buy(cost / 2);
    else
    {
      buy(cost - 1);
      buy(cost - 1);
    }
    return;
  }

  vector<long long> p(n);
  vector<int> bought(n);
  p[0] = p0;
  for (int i = 1; i < n; i++)
  {
    auto [ids, cost] = buy(p[i - 1] - 1);
    for (int j : ids)
      bought[j]++;
    if (size(ids) == 1) p[i] = cost;
    else p[i] = cost - 1;

    for (int j = 0; j < i -  bought[i]; j++)
      buy(p[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...