제출 #1287839

#제출 시각아이디문제언어결과실행 시간메모리
1287839nikoloz-ch선물 (IOI25_souvenirs)C++20
25 / 100
14 ms400 KiB
#include <bits/stdc++.h>
using namespace std;

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

void buy_souvenirs(int N, long long P0){
    if(N == 2){
        auto pii = transaction(P0-1);
        return;
    } else if(N == 3){
        auto pii = transaction(P0-1);
        if(pii.first.size() == 2){
            auto p3 = transaction((P0-1-pii.second)/2);
            return;
        }
        auto p = transaction(P0-2-pii.second);
        auto p2 = transaction(P0-2-pii.second);
        return;
    } else{
        long long l1 = P0;
        map<int,int> mp;
        for(int i = 0; i < N; i++) mp[i] = 0;
        int c = 0;
        for(int i = 1; i < N; i++){
            bool tr = false;
            int cnt = 0;
            while(mp[i] < i){
                if(c >= 4999) return;
                if(l1 <= 1) return;
                auto pii = transaction(l1-1);
                c++;
                for(auto t : pii.first){
                    if(t >= 0 && t < N) mp[t]++;
                }
                if(pii.first.size() == 2){
                    tr = true;
                }
                if(pii.second == 1ll){
                    tr = true;
                }
                cnt++;
                if(cnt > 5000) return;
            }
            bool bl = true;
            for(int k = 1; k < N; k++){
                if(mp[k] < k){ bl = false; break; }
            }
            if(bl) return;
            l1--;
            if(l1 < 1) l1 = 1;
            if(tr){
                if(l1 > 1) l1--;
            }
        }
    }
}
#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...