Submission #1256269

#TimeUsernameProblemLanguageResultExecution timeMemory
1256269SamurajSouvenirs (IOI25_souvenirs)C++20
39 / 100
12 ms412 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; #define st first #define nd second #define pb push_back #define rep(i,a,b) for(int i = a; i <= b; i++) #define irep(i,a,b) for(int i = a; i >= b; i--) typedef long long ll; typedef long double ld; //typedef __int128 int128; typedef vector<int> vi; typedef pair<int,int> pi; typedef pair<double,double> pd; typedef pair<ll,ll> pl; void buy_souvenirs(int n, ll p0) { if(n == 2){ transaction(p0-1); return; } if(n == 3){ pair<vi,ll> res = transaction(p0-1); //cout << "first res: " << res.st.size() << " " << res.nd << '\n'; if(res.st.size() == 1){ ll x = p0-res.nd-2; //cout << "x1: " << x << '\n'; transaction(x); transaction(x); } else{ ll x = ((p0-1-res.nd)+1)/2-1; //sufit na 2 //cout << "x2: " << x << '\n'; transaction(x); } return; } //teraz algos gdzie max 2 itemy! ll val = p0; int ile_j = 0; rep(i,1,n-2){ val--; pair<vi,ll> res = transaction(val); if(res.st.size() == 2){ ile_j++; val--; //zmniejszam zeby nie powielac 1 rep(j,1,i-1) transaction(val); } else{ if(res.nd == 1) val--; rep(j,1,i-1) transaction(val); } } //teraz dla n-1 val--; rep(i,1,n-1-ile_j) transaction(val); }
#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...