Submission #1259350

#TimeUsernameProblemLanguageResultExecution timeMemory
1259350sdkjflkjsldkfj선물 (IOI25_souvenirs)C++20
25 / 100
11 ms412 KiB
#include<bits/stdc++.h>
#include "souvenirs.h"
using namespace std;

//typedef long long ll;
//#define int ll
#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define all(a) a.begin(),a.end()

const int MOD=1000000007;

#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))

#define fios(); ios_base::sync_with_stdio(0);cin.tie(0);
#define fraction(x); cout.unsetf(ios::floatfield); cout.precision(x); cout.setf(ios::fixed,ios::floatfield);
#define file(); freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);

/*
const int maxN=1e5 + 15;
int a[maxN];
int n;
int cnt[maxN];

pair<vector<int>,long long> transaction(long long m){
    vector<int> memo;
    for(int i=0;i<n;i++){
        if(a[i]<=m){

            cnt[i]++;
            m-=a[i];
            memo.pb(i);
        }
    }
    return {memo,m};
}
*/

void buy_souvenirs(int n, long long p0){
    if(n==2){
        //subtask 1
        transaction(p0-1);
        return ;
    }
    if(n==3){
        pair<vector<int>,long long> tem=transaction(p0-1);
        vector<int> memo=tem.ff;
        if(memo.size()==1){
            long long cost=(p0-1)-tem.ss;
            transaction(cost-1);
            transaction(cost-1);
        }else{
            long long cost=(p0-1)-tem.ss;
            transaction((cost/2));
            /*while(1){
                pair<vector<int>,long long> p=transaction(1);
                if((p.ff).size()>0) break;
            }*/
        }
        return ;
    }
    //subtask 3
    pair<vector<int>,long long> tem;
    long long prev=p0;
    for(int i=0;i<n;i++){
        long long tem2=i;
        if(tem2==0) continue;
        bool f=0;
        while(tem2--){
            tem=transaction(prev-1);
            if(tem.ff.size()==2){
                // 5 3 1
                f=1;
            }
        }
        if(f){
            transaction(prev-2);
            return ;
        }else{
            prev=(prev-1)-tem.ss;
        }
    }
    return ;
}
#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...