Submission #1249953

#TimeUsernameProblemLanguageResultExecution timeMemory
1249953tosivanmakSouvenirs (IOI25_souvenirs)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
#include "souvenirs.h"
using namespace std;
#define ll long long

pair<vector<int>,ll> starting[105];
ll sm[105];
ll cnt[105]; ll P[105];
void proc(pair<vector<int>,ll>pre, ll ending){
    while(1){
        ll S=pre.second; S--;
        S/=(ll)pre.first.size();
        if(pre.first[0]==ending)break;
        pre=transaction(S);
        pre.second=S-pre.second;
        for(auto& u: pre.first){
            cnt[u]++;
        }
        starting[pre.first[0]]=pre;
    }
}
void buy_souvenirs(int N, long long P0){
    // std::pair<std::vector<int>, long long> transaction(long long M)
    for(int i=0;i<N+5;i++){
        starting[i].first.clear(); starting[i].second=0; sm[i]=0;
    }
    P[0]=P0;
    ll asked=P0-1;
    pair<vector<int>,ll>req=transaction(P0-1);
    req.second=P0-1-req.second;
    starting[req.first[0]]=req;
    pair<vector<int>,ll>pre=req;
    for(int i=0;i<N+5;i++){
        cnt[i]=0;
    }
    for(auto& u: pre.first){
        cnt[u]++;
    }
    while(1){
        ll S=pre.second; S--;
        S/=(ll)pre.first.size();
        if(pre.first[0]==N-1)break;
        pre=transaction(S);
        pre.second=S-pre.second;
        for(auto& u: pre.first){
            cnt[u]++;
        }
        starting[pre.first[0]]=pre;
    }
    for(int i=N-1;i>=0;i--){
        if(starting[i].first.size()!=0){
            while(starting[i].first.size()>1){
                starting[i].second-=starting[i].first.back();
                starting[i].first.pop_back();
            }
            P[i]=starting[i].second;
        }
        else{
            for(int j=i-1;j>=0;j--){
                if(starting[j].first.size()!=0){
                    proc(starting[j],i); break;
                }
            }
            while(starting[i].first.size()>1){
                starting[i].second-=starting[i].first.back();
                starting[i].first.pop_back();
            }
            P[i]=starting[i].second;
        }
        for(int j=i-1;j>=0;j--){
            if(starting[j].size()!=0){
                if(starting[j].back()==i){
                    starting[j].second-=P[i];
                    starting[j].first.pop_back();
                }
            }
        }
    }
    for(int i=0;i<N;i++){
        while(cnt[i]!=i){
            transaction(P[i]); cnt[i]++;
        }
    }
    return;
}

Compilation message (stderr)

souvenirs.cpp: In function 'void buy_souvenirs(int, long long int)':
souvenirs.cpp:71:28: error: 'struct std::pair<std::vector<int>, long long int>' has no member named 'size'
   71 |             if(starting[j].size()!=0){
      |                            ^~~~
souvenirs.cpp:72:32: error: 'struct std::pair<std::vector<int>, long long int>' has no member named 'back'
   72 |                 if(starting[j].back()==i){
      |                                ^~~~