Submission #1352410

#TimeUsernameProblemLanguageResultExecution timeMemory
1352410marizaEqualmex (CEOI25_equalmex)C++20
27 / 100
2094 ms2512 KiB
#include <vector>
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define RANGE (r-l+1)

vector<int> solve(int n, vector<int>& v, int q, vector<pair<int,int>>& queries){
	vector<int> all_ans;

    for(auto query:queries){
        ll l, r;
        tie(l,r)=query;

        ll a[RANGE];
        set<ll> s;
        for(ll i=l; i<=r; i++){
            a[i-l]=v[i];
            s.insert(a[i-l]);
        }

        ll mex=RANGE+1;
        for(ll i=1; i<=RANGE; i++){
            if(s.empty() || *s.begin()!=i){
                mex=i;
                break;
            }
            else s.erase(s.begin());
        }

        bool x[mex]={}, q=0;
        ll c=0, ans=0;
        for(ll i=0; i<RANGE; i++){
            if(q==0){
                if(a[i]<mex){
                    if(!x[a[i]]) c++;
                    x[a[i]]=1;
                }
                if(c==mex-1){
                    // cout<<i<<" ";
                    ans++;
                    q=1;
                }
            }
            else{
                if(a[i]<mex){
                    if(x[a[i]]) c--;
                    x[a[i]]=0;
                }
                if(c==0){
                    // cout<<i<<" ";
                    ans++;
                    q=0;
                }
            }
        }
        all_ans.push_back(ans);
    }
    return all_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...