Pagini recente » Cod sursa (job #2737536) | Cod sursa (job #1102091) | Cod sursa (job #2796844) | Cod sursa (job #2191539) | Cod sursa (job #536933)
Cod sursa(job #536933)
# include <fstream>
# include <iostream>
# include <algorithm>
# define DIM 1050000
using namespace std;
int n, l, u, p[DIM], a[DIM], cx[DIM], cy[DIM], sol;
unsigned v[DIM];
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 (!cx[a[i]])
++nx;
++cx[a[i]];
while (nx>=l && x<=i)
{
--cx[a[x]];
if (!cx[a[x]])
--nx;
++x;
}
if (!cy[a[i]])
++ny;
++cy[a[i]];
while (ny>u && y<=i)
{
--cy[a[y]];
if (!cy[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;
}