# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1260235 | truongdz_top12 | Souvenirs (IOI25_souvenirs) | C++20 | 0 ms | 0 KiB |
#include "souvernirs.h"
#include<bits/stdc++.h>
using namespace std;
int N,Q[111];
long long P[111];
void ask(int N,long long M)
{
vector<pair<vector<int>,long long>buy=transaction(M);
for(auto&i:buy)
++Q[i];
auto previous=buy;
while(true)
{
buy=previous;
while(!buy.first.empty()&&P[buy.first.back()])
{
buy.second+=P[buy.first.back()];
buy.fisrt.pop_back();
}
if(buy.first.size()==1&&(buy.first[0]==N-1||P[buy.first[0]]))
{
P[buy.first[0]]+=M-buy.second;
break;
}
if(buy.size()==1)
ask(M-buy.second-1);
else
ask((M-buy.second)/buuy.size());
}
}
void buy_souvenirs(int N,long long P0)
{
P[0]=P0;
ask(N,P0-1);
for(int i=0;i<N;++i)
{
while(Q[i]<i)
{
transaction(P[i]);
++Q[i];
}
}
}