Submission #1359636

#TimeUsernameProblemLanguageResultExecution timeMemory
1359636raineyjSouvenirs (IOI25_souvenirs)C++20
25 / 100
8 ms344 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;

void buy_souvenirs(int N, long long P0) {
    if(N==2) transaction(P0-1);
    else if(N==3)
    {
        pair<vector<int>, long long> res=transaction(P0-1);
        if(res.first.size()==1)
        {
            transaction(P0-1-res.second-1);
            transaction(P0-1-res.second-1);
        }
        else
        {
            long long c=P0-1-res.second;
            res=transaction(c/2);
        }
    }
    else if(P0==N)
    {
        for(int i=1; i<N; i++)
        {
            for(int j=0; j<i; j++) transaction(N-i);
        }
    }
    else
    {
        vector<int> sn(N);
        vector<int> price(N, -1);
        for(int i=1; i<N; i++) sn[i]=i;
        pair<vector<int>, long long> res=transaction(P0-1);
        if(res.first.size()==1) price[1]=P0-1-res.second;
        else
        { 
            price[1]=P0-2;
            sn[res.first[1]]-=1;
            price[res.first[1]]==1;
        }
        for(int i=2; i<N; i++)
        {
            for(int j=0; j<sn[i]; j++)
            {
                if(price[i]==-1)
                {
                    pair<vector<int>, long long> res=transaction(price[i-1]-1);
                    if(res.first.size()==1) price[i]=price[i-1]-1-res.second;
                    else
                    { 
                        price[i]=price[i-1]-2;
                        sn[res.first[1]]-=1;
                        price[res.first[1]]==1;
                    }
                }
                else transaction(price[i]);
            }
        }
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...