Submission #1040715

#TimeUsernameProblemLanguageResultExecution timeMemory
1040715qwerasdfzxclA Light Inconvenience (CEOI23_light)C++17
100 / 100
801 ms600 KiB
#include "light.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; ll n; vector<ll> a; void prepare(){ n = 1; a.push_back(1); } vector<ll> rev(vector<ll> v){ reverse(v.begin(), v.end()); return v; } std::pair<long long, std::vector<long long>> join(long long p){ n += p; vector<ll> b; for (auto &x:a) if (x <= n) b.push_back(x); a.clear(); a.push_back(n); while(true){ ll t = a.back() - 1 - (n - a.back() + 1); if (t <= 1) break; ll mn = 4e18; for (auto &x:b) if (x + p >= t) mn = min(mn, max(t, x)); assert(mn < a.back()); a.push_back(mn); } a.push_back(1); assert(a.size() <= 150); return {p, rev(a)}; } std::pair<long long, std::vector<long long>> leave(long long p){ n -= p; if (n==1) {return {0, {1}};} vector<ll> b; for (auto &x:a) if (x <= n) b.push_back(x); a.clear(); a.push_back(n); while(true){ ll t = a.back() - 1 - (n - a.back() + 1); if (t <= 1) break; ll mn = 4e18; for (auto &x:b) if (x + p >= t) mn = min(mn, max(t, x)); assert(mn < a.back()); a.push_back(mn); } a.push_back(1); assert(a.size() <= 150); return {p, rev(a)}; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...