#include "souvenirs.h"
#include <utility>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
void buy_souvenirs(int N, long long P0) {
    vector<long long> P(3, 0);
    vector<int> quantity_owned(3, 0);
    P[0] = P0;
    pair<vector<int>, long long> res = transaction(P0 - 1);
    // If we buy both type 1 and type 2 in this transaction
    if(res.first.size() == 2){
        long long leftover = res.second;
        long long total_paid = P0 - 1 - leftover;
        long long upper_type2 = total_paid / 2;
        if(total_paid % 2 == 0){
            upper_type2 -= 1;
        }
        pair<vector<int>, long long> res = transaction(upper_type2);
    }
    // If we only buy type 1
    else {
        long long leftover = res.second;
        long long P1 = P0 - 1 - leftover;
        pair<vector<int>, long long> res = transaction(P1 - 1);
        pair<vector<int>, long long> res2 = transaction(P1 - 1);
    }
        /*int left = (P[0] - 1 - leftover)/2 + 1;
        int right = P[0] - 1 - leftover;
        cout << left << " " << right << "\n";
        int mid = 0;
        while(left < right){
            mid = left + (right - left) / 2;
            pair<vector<int>, long long> res = transaction(mid);
            if(res.first[0] == 2){
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        cout << left << "\n";*/
    
    return;
}
/*
#!/bin/bash
task="souvenirs"
grader_name="grader"
g++ -std=gnu++20 -Wall -O2 -pipe -static -g -o main grader.cpp souvenirs.cpp
3
100 70 1
*/
| # | 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... |