Pagini recente » Cod sursa (job #3341905) | Cod sursa (job #881698) | Cod sursa (job #246812) | Cod sursa (job #3176932) | Cod sursa (job #988577)
Cod sursa(job #988577)
#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=0;i<n;++i)
{
f>>x;
nor[i]=ha(x);
}
l1=l2=0;
nr1=nr2=0;
for(i=0;i<n;++i)
{
while(l1<n&&nr1<l)
{
nr1+=!v1[nor[l1++]]++;
}
while(l2<n&&nr2+!v2[nor[l2]]<=u)
{
nr2+=!v2[nor[l2++]]++;
}
if(nr1>=l)
sol+=(l2-l1+1);
nr1-=!--v1[nor[i]];
nr2-=!--v2[nor[i]];
}
g<<sol<<'\n';
return 0;
}