Pagini recente » Cod sursa (job #1851552) | Cod sursa (job #2348321) | Cod sursa (job #1841330) | Istoria paginii runda/brasov_7_jr | Cod sursa (job #344552)
Cod sursa(job #344552)
#include <cstdio>
#include <vector>
#define N 1050000
#define MOD 666013
using namespace std;
int A[N];
vector<int> L[MOD];
void insert(int x)
{
int nr=x%MOD;
vector<int>::iterator it;
for (it=L[nr].begin(); it!=L[nr].end() && *it!=x; it++);
if (it==L[nr].end()) L[nr].push_back(x);
}
int exists(int x)
{
int nr=x%MOD;
vector<int>::iterator it;
for (it=L[nr].begin(); it!=L[nr].end() && *it!=x; it++);
return it!=L[nr].end();
}
void erase(int x)
{
int nr=x%MOD;
vector<int>::iterator it;
for (it=L[nr].begin(); it!=L[nr].end() && *it!=x; it++);
if (it==L[nr].end()) return;
L[nr].erase(it);
}
int main()
{
int n,l,u,i,j,k=0,kont=0,t;
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%d%d%d",&n,&l,&u);
for (i=1; i<=n; i++) scanf("%d",&A[i]);
for (i=1; i<=n; i++)
{
k=0;
for (j=i; j<=n && k<=u; j++)
{
if (!exists(A[j])) k++;
if (k>=l && k<=u) kont++;
insert(A[j]);
}
t=j;
for (j=i; j<=t; j++) erase(A[j]);
}
printf("%d",kont);
return 0;
}