Pagini recente » Cod sursa (job #3143118) | Cod sursa (job #48539) | Cod sursa (job #3269230) | Cod sursa (job #3001168) | Cod sursa (job #1048185)
#include<fstream>
#include<cstring>
#include<vector>
#include<algorithm>
#define dim 1<<20
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
vector < pair < unsigned int ,unsigned int > >s;
unsigned int normalizare,i,j,n,u,l,v[dim],fr[dim];
long long sub(int X) {
unsigned long long ans=0;
memset(fr,0,sizeof(fr));
unsigned int i=0;unsigned int j=0;
unsigned int nr=0;
for(;j<n;++j) {
if(fr[v[j]]==0)
++nr;
++fr[v[j]];
while(nr>X) {
--fr[v[i]];
if(!fr[v[i]])
--nr;
++i;
}
ans+=j-i+1;
}
return ans;
}
int main () {
f>>n>>l>>u;
unsigned int x;
for(i=0;i<n;++i){
f>>x;
s.push_back(make_pair(x,i));
}
sort(s.begin(),s.end());
normalizare=0;
i=0;
v[s[i++].second]=normalizare;
for(;i<n;i++) {
if(s[i-1].first!=s[i].first){
++normalizare;
v[s[i].second]=normalizare;
}
else
v[s[i].second]=normalizare;
}
g<<sub(u)-sub(l-1);
return 0;
}