Pagini recente » Cod sursa (job #848745) | Cod sursa (job #2276386) | Cod sursa (job #1527728) | Cod sursa (job #1981031) | Cod sursa (job #536949)
Cod sursa(job #536949)
# include <fstream>
# include <iostream>
# include <algorithm>
# include <vector>
# define K 666013
# define DIM 1050000
# define pb push_back
# define mp make_pair
using namespace std;
int n, l, u, cx[DIM], cy[DIM], v[DIM];
vector < pair<unsigned,int> > H[DIM+3];
long long sol;
void read ()
{
ifstream fin ("secv5.in");
fin>>n>>l>>u;
unsigned x, j;
int k, pp, q=0;
for(int i=1;i<=n;++i)
{
fin>>x;
k=x%K;
pp=0;
for(j=0;j<H[k].size() && !pp;++j)
if (H[k][j].first==x)
v[i]=H[k][j].second, pp=1;
if (!pp)
{
H[k].pb(mp(x,++q));
v[i]=q;
}
}
}
void solve ()
{
int nx=0, ny=0, x=1, y=1;
for(int i=1;i<=n;++i)
{
if (!cx[v[i]])
++nx;
++cx[v[i]];
while (nx>=l && x<=i)
{
--cx[v[x]];
if (!cx[v[x]])
--nx;
++x;
}
if (!cy[v[i]])
++ny;
++cy[v[i]];
while (ny>u && y<=i)
{
--cy[v[y]];
if (!cy[v[y]])
--ny;
++y;
}
if (nx==l-1 && ny<=u && ny>=l)
sol+=x-y;
}
}
int main ()
{
read ();
solve ();
ofstream fout ("secv5.out");
fout<<sol;
return 0;
}