Submission #1182932

#TimeUsernameProblemLanguageResultExecution timeMemory
1182932abdalrhman_sfarA Light Inconvenience (CEOI23_light)C++20
100 / 100
160 ms436 KiB
#include "light.h"
#include <bits/stdc++.h>
#include <vector>
using namespace std;
#define int long long

vector<int> v;

void prepare(){
    v.emplace_back(1);
}

pair<long long, vector<long long>> join(long long p){
    int n=v.back()+p;
    vector<int> ans; ans.emplace_back(n);
    int i=v.size()-1,c=n;
    while (c>1) {
        int a=(c-1)-(n-c+1);
        if (c<=v[i]) {--i; continue;}
        else if (a<=v[i]) {
            if (i==0) {
                ans.emplace_back(v[i]);
                c=v[i]; continue;
            }
            else {
                if (a<=v[i-1]) {--i; continue;}
                else if (a<=(v[i-1]+p)) {--i; continue;}
                else {
                    ans.emplace_back(v[i]);
                    c=v[i]; continue;
                }
            }
        }
        else {
            ans.emplace_back(a);
            c=a; continue;
        }
    } sort(ans.begin(),ans.end()); unique(ans.begin(),ans.end());
    v.clear(); v=ans;
    return {p,ans};
}

pair<long long, vector<long long>> leave(long long p){
    //for (auto&it:v) cout << it << ' '; cout << '\n';
	int n=v.back()-p;
    vector<int> ans; ans.emplace_back(n);
    int i=v.size()-1,c=n;
    while (c>1) {
        int a=(c-1)-(n-c+1);
        if (c<=v[i]) {--i; continue;}
        else if (a<=v[i]) {
            if (i==0) {
                ans.emplace_back(v[i]);
                c=v[i]; continue;
            }
            else {
                if (a<=v[i-1]) {--i; continue;}
                else if (a<=(v[i-1]+p)) {--i; continue;}
                else {
                    ans.emplace_back(v[i]);
                    c=v[i]; continue;
                }
            }
        }
        else {
            ans.emplace_back(a);
            c=a; continue;
        }
    } sort(ans.begin(),ans.end()); unique(ans.begin(),ans.end());
    v.clear(); v=ans;
    return {p,ans};
}
#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...