Submission #1208499

#TimeUsernameProblemLanguageResultExecution timeMemory
1208499asli_bgA Light Inconvenience (CEOI23_light)C++20
0 / 100
1102 ms1099868 KiB
#include <bits/stdc++.h>
using namespace std;
 
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;

#include "light.h"

#define int long long
 
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<pii> vii;
typedef vector<bool> vb;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef vector<pll> vll;
 
typedef tree<pii,null_type,less<pii>,rb_tree_tag,
tree_order_statistics_node_update> oset;
 
#define fi first
#define se second
#define pb push_back
#define pf push_front
 
#define mid (l+r)/2
#define all(x) x.begin(),x.end()
#define FOR(i,a) for(int i=0;i<(a);i++)
#define FORE(i,a,b) for(int i=(a);i<(b);i++)
 
#define cont(x) for(auto el:x) cout<<el<<' ';cout<<endl;
#define contp(x) for(auto el:x) cout<<el.fi<<'-'<<el.se<<' ';cout<<endl;
#define sp <<" "<<
 
#define DEBUG(x) cout<<(#x) sp x<<endl
#define carp(a,b) (((a%MOD)*(b%MOD))%MOD)
#define topla(a,b) (((a%MOD)+(b%MOD))%MOD)
 
const ll INF=1e18;
const int MAXN=1e6+5;
const int MOD=1e9+7;

vi vec;
int say;

void prepare(){
    say=1;
	vec.pb(1);
}

pair<int,vi> join(int p){
    //cout<<"join" sp p<<endl;

    int tut=p;
    int sz=vec.size();
    
    p--;
    while(p--) vec.pb(0);
    vec.pb(1);
    say++;

    FOR(i,sz){
        if(say<=150) break;
        if(vec[i]==0) continue;
        vec[i]=0;
        say--;
    }

    for(int i=sz;i>=0;i--){
        if(sz-i>p) break;
        if(vec[i]==1) continue;
        if(say+1<=150){
            vec[i]=1;
            say++;
        }
    }

    vi res;
    FOR(i,vec.size()){
        if(vec[i]) res.pb(i+1);
    }
    
	return {tut, res};
}

pair<int,vi> leave(int p){
    //cout<<"leave" sp p<<endl;

    int tut=p;
    while(p--) vec.pop_back();

    int sz=vec.size();
    if(vec[sz-1]!=1){
        vec[sz-1]=1;
        say++;
    }

    FOR(i,sz){
        if(say<=150) break;
        if(vec[i]==0) continue;
        vec[i]=0;
        say--;
    }

    for(int i=sz;i>=0;i--){
        if(sz-i>p) break;
        if(vec[i]==1) continue;
        if(say+1<=150){
            vec[i]=1;
            say++;
        }
    }

    vi res;
    FOR(i,vec.size()){
        if(vec[i]) res.pb(i+1);
    }
    
	return {tut, res};
}
#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...