Pagini recente » Cod sursa (job #52681) | Cod sursa (job #2237587) | Cod sursa (job #72765) | Cod sursa (job #250512) | Cod sursa (job #2875923)
#include <bits/stdc++.h>
using namespace std;
ifstream r("secv5.in");
ofstream w("secv5.out");
unordered_map <long long, long long > mp;
const int N=(1<<20)+1;
long long v[N],n;
long long f[N];
long long rez(long long d)
{
long long ans=0;
if(d==0){
return ans;
}
memset(f, 0, sizeof(f));
long long cnt=0, st=1;
for(long long dr=1;dr<=n;++dr)
{
if(f[v[dr]]==0){
cnt++;
}
f[v[dr]]++;
if(cnt<=d){
ans+=(dr-st+1);
}
else
{
while(cnt>d)
{
f[v[st]]--;
if(f[v[st]]==0){
cnt--;
}
st++;
}
ans+=(dr-st+1);
}
}
return ans;
}
int main()
{
long long l,u;
r>>n>>l>>u;
long long cnt=0;
for(long long i=1;i<=n;i++)
{
r>>v[i];
if(mp[v[i]]==0)
{
mp[v[i]]=++cnt;
v[i]=cnt;
}
else{
v[i]=mp[v[i]];
}
}
mp.clear();
w<<rez(u)-rez(l-1);
return 0;
}