#include "souvenirs.h"
#include <utility>
#include <bits/stdc++.h>
using namespace std;
void buy_souvenirs(int N, long long P0)
{
pair<vector<int>, long long> res;
vector<long long> v;
if (N == 2)
{
transaction(P0 - 1);
return;
}
if (N == 3)
{
res = transaction(P0 - 1);
long long x = res.second;
if (res.first.size() == 2)
{
transaction((P0 - x - 1)/2);
return;
}
else
{
long long P1 = P0 - x - 1;
transaction(P1 - 1);
transaction(P1 - 1);
return;
}
}
if (P0 == N)
{
for (int i = 0; i < N; i++)
{
int j = i;
while (j--)
{
transaction(N - i);
}
}
return;
}
{
vector<long long> P(N);
P[0] = P0;
set<int> found;
res = transaction(P0 - 1);
for (int id : res.first)
found.insert(id);
for (int i = 1; i < N; i++)
{
long long base = P[i - 1];
long long next = -1;
pair<vector<int>, long long> res2;
for (long long d = -2; d <= 2; d++)
{
long long price = base + d;
if (price < 1) continue;
res2 = transaction(price - 1);
for (int id : res2.first)
{
if (!found.count(id))
{
found.insert(id);
next = price;
break;
}
}
if (next != -1) break;
}
if (next == -1)
next = base;
P[i] = next;
}
return;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |