| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1352422 | Alex1298 | Equalmex (CEOI25_equalmex) | C++20 | 0 ms | 0 KiB |
#include <iostream>
#include <vector>
using namespace std;
int frec[400005];
std::vector<int> solve(int n, std::vector<int> v, int q, std::vector<std::pair<int, int>> queries)
{
vector<int> rez;
for(auto it: queries)
{
int st = it.first;
int dr = it.second;
for(int i = st; i<=dr; i++)
{
frec[v[i]]++;
}
int mex = 0;
for(int i = 1; i<=n + 1; i++)
{
if(frec[i] == 0)
{
mex = i;
break;
}
}
for(int i = st; i<=dr; i++)
{
frec[v[i]]--;
}
if(mex == 1)
{
rez.push_back(dr - st + 1);
continue;
}
int i = st;
int ans = 0;
while(i <= dr)
{
int ramas = mex - 1;
int j = i;
while(j <= dr)
{
frec[v[j]]++;
if(v[j] < mex && frec[v[j]] == 1)
{
ramas--;
}
j++;
if(ramas == 0)
{
break;
}
}
j--;
if(ramas == 0)
{
ans++;
}
for(int k = i; k<=j; k++)
{
frec[v[k]]--;
}
i = j + 1;
}
rez.push_back(ans);
}
return rez;
}