제출 #1250841

#제출 시각아이디문제언어결과실행 시간메모리
1250841discontinuous선물 (IOI25_souvenirs)C++20
22 / 100
1 ms412 KiB
// Author: Anikait Prasar

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define pb push_back

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

void buy_souvenirs(int n, ll p0) {
    if(n==2) {
        transaction(p0-1);
        return;
    }

    else if(n==3) {
        auto h = transaction(p0-1);
        int d = h.first.size();
        ll c = h.second;

        ll sum = p0-1LL-c;
        if(d==1) {
            // Here, sum is the value of
            // 2nd element
            transaction(sum-1LL);
            transaction(sum-1LL);
        } 
        if(d==2){
            transaction(sum/2LL);
        }

        return;
    }

    ll prev = p0;
    ll last = 0;
    for(int j = 1; j<n-1; j++) {
        auto h = transaction(prev-1);    
        int d = h.first.size();
        ll c = h.second;

        if(d==2) {
            last++;
            prev -= 2;
        }
        else {
            if(c==0) {
                prev--;
            }
            else {
                prev -= 2;
            }
        }
    }

    while(last < n) {
        transaction(prev-1);
        last++;
    }
    
    // int k = 1;
    // for(ll i = n-1; i>0; i--) {
    //     for(ll j = 0; j<k; j++) transaction(i);
    //     k++;
    // }
}

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