/*
* Starting with the name of almighty ALLAH
*/
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
void buy_souvenirs(int N, long long P0) {
int PN = max(0LL,P0 - (2*N)); // the least limit of the last sou..
int RealPN = -1;
for(int i = PN; i <= P0; ++i) {
pair<vector<int>, long long> res = transaction(i);
if(res.first.size() == 1) {
RealPN = res.second;
break;
}
}
// RealPN = this is the real value of PN;
for (int i = 0; i < N-1; ++i)
{
pair<vector<int>, long long> res = transaction(RealPN);
}
// called it for N-1 times.
vector<int> P;
for (int i = RealPN+1; i <= P0; ++i)
{
pair<vector<int>, long long> res = transaction(i);
if(res.first.size() == 1) {
P.push_back(res.second);
}
}
reverse(P.begin(), P.end());
for (int i = 0; i < P.size(); ++i)
{
int cur = P[i];
int num = i;
for (int j = 0; j < num; ++j)
{
transaction(cur);
}
}
}
# | 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... |