Pagini recente » Cod sursa (job #1247133) | Cod sursa (job #478713) | Cod sursa (job #2047183) | Cod sursa (job #2106032) | Cod sursa (job #2047190)
#include<fstream>
#include<tr1/unordered_map>
using namespace std;
using namespace tr1;
ifstream fi("secv5.in");
ofstream fo("secv5.out");
long long A[1048577],n,i,l,r;
unordered_map<int,long long> HashT;
long long calc(int lim)
//returneaza nr de siruri cu maxim lim elemente distincte
{
int i,nrd=0,st=1;
long long rez=0LL;
HashT.clear();
for(i=1; i<=n; i++)
{
HashT[A[i]]++;
if(HashT[A[i]]==1)
nrd++;
while(nrd>lim)
{
HashT[A[st]]--;
if(HashT[A[st]]==0)
nrd--;
st++;
}
rez=(long long)(rez+i-st+1LL);
}
return rez;
}
int main()
{
fi>>n>>l>>r;
for(i=1; i<=n; i++)
fi>>A[i];
fo<<calc(r)-calc(l-1)<<"\n";
fi.close();
fo.close();
return 0;
}