#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... |