Pagini recente » Borderou de evaluare (job #2830515) | Cod sursa (job #2243686) | Cod sursa (job #2670113) | Cod sursa (job #150361) | Cod sursa (job #1559608)
#include<fstream>
#include<algorithm>
#include<cstring>
#define mp make_pair
#define N (1<<20)+20
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
unsigned int i,n,p,l,u,x,nr[N],v[N];
pair<unsigned int,int>a[N];
inline long long rez(int x)
{
memset(nr,0,sizeof(nr));
int j=1,s=0;
long long sol=0;
for(i=1;i<=n;++i)
{
if(!nr[v[i]])
++s;
++nr[v[i]];
while(s>x)
{
--nr[v[j]];
if(!nr[v[j]])
--s;
++j;
}
sol+=(long long)(i-j+1);
}
return sol;
}
int main()
{
f>>n>>l>>u;
for(i=1;i<=n;++i)
{
f>>x;
a[i]=mp(x,i);
}
sort(a+1,a+n+1);
v[a[1].second]=1;
p=1;
for(i=2;i<=n;++i)
if(a[i-1].first==a[i].first)
v[a[i].second]=p;
else
v[a[i].second]=++p;
g<<rez(u)-rez(l-1)<<'\n';
return 0;
}