Submission #1306979

#TimeUsernameProblemLanguageResultExecution timeMemory
1306979michael12Souvenirs (IOI25_souvenirs)C++20
25 / 100
12 ms400 KiB
#include "souvenirs.h"
#include<bits/stdc++.h>
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define sm pair<vector<int>, long long>
using namespace std;
void sub3(int n, long long P0){
   sm T = transaction(P0 - 1);
   if(T.ff.size() == 1){
      long long p1 = P0 - 1 - T.ss;
      transaction(p1 - 1);
      transaction(p1 - 1);
   }
   else{
     long long sm2 = P0 - 1 - T.ss;
     transaction(sm2 / 2);
   }
}
void buy_souvenirs(int N, long long P0){
     long long p = P0;
     if(N == 2){
     transaction(p - 1);
     return;
     }
     else if(N == 3){
        sub3(N, P0);
        return;
     }
     else if(P0 == N){
        for(int i = N - 1; i >= 1; i--){
            for(int j = 1; j <= N - i; j++){
                transaction(i);
            }
        }
        return;
     }
     else{
        vector<long long> dp(N, 0);
        dp[0] = P0;
        for(int i = 0; i < N - 1; i++){
            sm T = transaction(dp[i] - 1);
            if(T.ss == 1){
                dp[i + 1] = dp[i] + 2;
            }
            else{
                dp[i + 1] = dp[i] + 1;
            }
        }
        for(int i = 0; i <= N - 1; i++){
            for(int j = 0; j <= N; j++){
                transaction(dp[i]);
            }
        }
        return;
     }

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