Submission #1249691

#TimeUsernameProblemLanguageResultExecution timeMemory
1249691_abaatarSouvenirs (IOI25_souvenirs)C++20
7 / 100
12 ms412 KiB
#include "souvenirs.h" #include <utility> #include <vector> #include <cassert> #include <algorithm> #include <numeric> #include <iostream> #include <cstring> using namespace std; const int Ma = 5e2+10; using ll = long long; int sold[111]; void buy_souvenirs(int N, long long P0) { // if (N == 2) transaction(P0-1); // else { // for (int i = N - 1; i > 0; i--) { // for (int j = i; j > 0; j--) transaction(j); // } // } for (int i = 1; i < N; i++) sold[i] = i; ll cur = P0 - 1; bool hasOne = false; for (int i = 1; i < N; i++) { if (i == N - 1 && hasOne == true) { while (sold[N - 1]-- > 0) transaction(1); return; } auto res = transaction(cur); sold[i]--; if (res.second == 1) { // no price 1 and p[i] = p[i - 1] - 2 while (sold[i]-- > 0) { transaction(cur - 1); } cur -= 2; } else { // res.second = 0 if (res.first.size() == 1) { // p[i] = p[i - 1] - 1 while (sold[i]-- > 0) { transaction(cur); } cur -= 1; } else { // p[i] = p[i - 1] - 2 and hasOne = true hasOne = true; sold[N - 1]--; while (sold[i]-- > 0) { transaction(cur - 1); } } } } }
#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...