#include "souvenirs.h"
#include <utility>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
namespace sub1 {
    void solve(long long P0) {
        std::pair<std::vector<int>, long long> res = transaction(P0 - 1);
//        return 0;
    }
}
namespace sub2 {
    void solve(int N) {
//        int prev = P0;
        for (int i = 1; i < N; ++i) {
            for (int j = 1; j <= i; ++j) pair<vector<int>, long long> res = transaction(N - i);
        }
//        return 0;
    }
}
namespace sub3 {
    void solve(int N, int P0) {
        int pre = P0;
        for (int i = 1; i < N; ++i) {
            pair<vector<int>, long long> tmp = transaction(pre - 1);
            if (tmp.second == 1) {
                pre = pre - 2;
            } else {
                --pre;
            }
            for (int j = 2; j <= i; ++j) {
                tmp = transaction(pre);
            }
        }
    }
}
void buy_souvenirs(int N, long long P0) {
    
    if (N == 2) {
        sub1::solve(P0);
        return;
    }
    if (P0 == N) {
        sub2::solve(N);
        return;
    }
    sub3::solve(N, P0);
    
    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... |