Pagini recente » Cod sursa (job #1348227) | Cod sursa (job #2477211) | Cod sursa (job #73128) | Cod sursa (job #3128235) | Cod sursa (job #536924)
Cod sursa(job #536924)
# include <fstream>
# include <iostream>
# include <algorithm>
# define DIM 1050000
using namespace std;
int n, l, u, v[DIM], p[DIM], a[DIM], c[DIM], sol;
void read ()
{
ifstream fin ("secv5.in");
fin>>n>>l>>u;
for(int i=1;i<=n;++i)
fin>>v[i], p[i]=i;
}
bool inline cmp (int i, int j)
{
if (v[i]<v[j])return true;
return false;
}
void uniform()
{
sort(p+1, p+n+1, cmp);
int q=0;
for(int i=1;i<=n;++i)
if (v[p[i]]!=v[p[i-1]])
a[p[i]]=++q;
else
a[p[i]]=q;
}
void solve ()
{
int nx=0, ny=0, x=1, y=1;
for(int i=1;i<=n;++i)
{
if (!c[a[i]])
++nx, ++ny;
++c[a[i]];
while (nx>=l && x<=i)
{
--c[a[x]];
if (!c[a[x]])
--nx;
++x;
}
while (ny>u && y<=i)
{
--c[a[y]];
if (!c[a[y]])
--ny;
++y;
}
if (nx==l-1 && ny<=u && ny>=l)
sol+=x-y;
}
}
int main ()
{
read ();
uniform();
solve ();
ofstream fout ("secv5.out");
fout<<sol;
return 0;
}