Pagini recente » Cod sursa (job #2142494) | Cod sursa (job #2121693) | Cod sursa (job #1111908) | Cod sursa (job #1739707) | Cod sursa (job #851996)
Cod sursa(job #851996)
#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 ,int > >s;
int normalizare,i,j,n,u,l,v[dim],fr[dim];
long long sub(int X) {
int ans=0;
memset(fr,0,sizeof(fr));
int i=0;j=0;
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;
int x;
for(i=0;i<n;++i){
f>>x;
s.push_back(make_pair(x,i));
}
sort(s.begin(),s.end());
normalizare=0;
for(i=0;i<n;) {
if(i && s[i-1].first!=s[i].first){
++normalizare;
}
v[s[i++].second]=normalizare;
}
g<<sub(u)-sub(l-1);
return 0;
}