#include "souvenirs.h"
#include <utility>
#include <vector>
#include <bits/stdc++.h>
#define ll long long 
using namespace std ; 
#define re exit (0); 
#define maxn 1009 
typedef pair<vector<int>,ll> Data ; 
int cnt_buy [maxn] ; 
ll p [maxn] ; 
void buy_souvenirs(int N, long long P0) {
	Data res ; 
	if ( N == 2 ) 
	{
		res = transaction (P0-1) ; 
		return ;
	}
	if ( N == 3 ) 
	{
		res = transaction (P0-1) ; 
		if ( res.first.size () == 1 ) 
		{
			ll cost = res.second ; 
			res = transaction ((P0-2-cost)) ; 
			res = transaction ((P0-2-cost)) ; 
			return ; 
 		}
 		else 
 		{
 			ll cost = res.second ; 
 			res = transaction ((P0-1-cost)/2) ; 
			return ; 
		}
	}
	p [0] = P0 ; 
	for ( int i = 1 ; i < N ; i ++ ) 
	{
		res = transaction (p[i-1]-1) ; 
		for ( auto x : res.first ) cnt_buy [x] ++ ; 
		if ( res.first.size () == 1 ) 
		{
			p [i] = p [i-1] - 1 - res.second ; 
		}
		else
		{
			p [i] = p [i-1] - 1 ; 
		}
	}
	
	for ( int i = 1 ; i < N ; i ++ ) 
	{
		if ( cnt_buy [i] < i )
		{
			for ( int j = cnt_buy [i] ; j < i ; j ++ ) res = transaction (p[i]) ; 
		} 
	}
	
	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... |