Submission #1302193

#TimeUsernameProblemLanguageResultExecution timeMemory
1302193Valaki2Souvenirs (IOI25_souvenirs)C++20
21 / 100
13 ms400 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define mp make_pair #define pii pair<int, int> #define fi first #define se second #define typ pair<vector<signed>, int> void solve_2(int n, int p0) { transaction(p0 - 1); } void solve_3(int n, int p0) { typ q1 = transaction(p0 - 1); if(q1.fi.size() == 1) { int p1 = (p0 - 1) - q1.se; transaction(p1 - 1); transaction(p1 - 1); } else { int p1_plus_p2 = (p0 - 1) - q1.se; transaction(p1_plus_p2 / 2); } } void subtask_3(int n, int p0) { vector<int> p(n, 0); p[0] = p0; int cnt_ones = 0; for(int i = 1; i < n - 1; i++) { typ q = transaction(p[i - 1] - 1); if(q.fi.size() == 2) { cnt_ones++; p[i] = p[i - 1] - 2; } else { p[i] = (p[i - 1] - 1) - q.se; } for(int j = 1; j < i; j++) { transaction(p[i]); } } while(cnt_ones < n - 1) { transaction(p[n - 2] - 1); cnt_ones++; } } void buy_souvenirs(signed N, int P0) { /*if(N == 2) { solve_2(N, P0); return; } if(N == 3) { solve_3(N, P0); return; }*/ subtask_3(N, P0); return; //pair<vector<signed>, int> res = transaction(3); //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...