Submission #1250140

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

using namespace std;

const long long MAXN = 100 + 1;

long long counter[MAXN], values[MAXN];

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

void buy_souvenirs(int N, long long P0){
    
    
    if(N == 1)
    {
        return;
    }
    else 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;
        values[0] = P0;
        
        for(int i = 1 ; i < N ; ++i)
        {
            
            pair<vector<int>, long long> p = transaction(prev - 1);
            
            for(int idx : p.first)
            {
                counter[idx]++;
            }
            
            if(p.first.size() == 1)
            {
                prev -= !p.second ? 1 : 2;
                values[i] = prev;
            }
            else
            {
                prev -= 2;
                values[i] = prev;
            }
            
            
        }
        
        
        for(int i = 1 ; i < N ; ++i)
        {
            
            while(counter[i] < i)
            {
                
                transaction(values[i]);
                counter[i]++;
            }
        }
    
    
    }

}



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