Submission #1250098

#TimeUsernameProblemLanguageResultExecution timeMemory
1250098kaloyanSouvenirs (IOI25_souvenirs)C++20
25 / 100
12 ms412 KiB
#include <bits/stdc++.h>

using namespace std;

const long long MAXN = 100 + 1;

long long counter[MAXN];

std::pair<std::vector<int>, long long> transaction(long long M);

void buy_souvenirs(int N, long long P0){
    
    if(N == 2) 
    {
        transaction(P0 - 1);
    }
    else if(N == 3)
    {
        
        pair<vector<int>, long long> p = transaction(P0 - 1);
        
        if(p.first.size() == 1)
        {
            long long first_val = (P0 - 1) - p.second;
            transaction(first_val - 1);
            transaction(first_val - 1);
        }
        else
        {
            long long total_sum = (P0 - 1) - p.second;
            transaction(total_sum / 2);
        }
    
    
    }
    else
    {
        
        long long prev = P0;
        
        for(int i = 1 ; i < N ; ++i)
        {
            
            long long flag = 0;
            
            while(counter[i] < i)
            {
                pair<vector<int>, long long> p = transaction(prev - 1 - flag);
                
                for(int idx : p.first)
                    counter[idx]++;
                    
                
                if(p.second)
                {
                    flag = 1;
                }
                    
            }
            
            if(flag)
            {
                prev -= 2;
            }
            else
            {
                prev -= 1;
            }
        }
    
    }

}



#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...