Pagini recente » Cod sursa (job #2044545) | Cod sursa (job #1575166) | Cod sursa (job #3345838) | Cod sursa (job #2022677) | Cod sursa (job #988568)
Cod sursa(job #988568)
#include<fstream>
#include<vector>
#define MOD 666013
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
int i,n,l1,l2,nr1,nr2,x,nr,l,u,v1[1100000],v2[1100000],nor[1100000];
long long sol;
vector<pair<int,int> >has[MOD];
inline int ha(int x)
{
int key=x%MOD;
for(unsigned int i=0;i<has[key].size();++i)
{
if(has[key][i].first==x)
return has[key][i].second;
}
++nr;
has[key].push_back(make_pair(x,nr));
return nr;
}
int main()
{
f>>n>>l>>u;
for(i=1;i<=n;++i)
{
f>>x;
nor[i]=ha(x);
}
l1=l2=1;
nr1=nr2=0;
for(i=1;i<=n;++i)
{
while(l1<=n&&nr1<l)
{
if(!v1[nor[l1]])
++nr1;
++v1[nor[l1]];
++l1;
}
while(l2<=n&&nr2+!v2[nor[l2]]<=u)
{
if(!v2[nor[l2]])
++nr2;
++v2[nor[l2]];
++l2;
}
if(nr1>=l)
sol+=l2-l1+1;
--v1[nor[i]];
--v2[nor[i]];
if(!v1[nor[i]])
--nr1;
if(!v2[nor[i]])
--nr2;
}
g<<sol<<'\n';
return 0;
}