Pagini recente » Borderou de evaluare (job #1570986) | Cod sursa (job #291088) | Cod sursa (job #2512715) | Cod sursa (job #3247423) | Cod sursa (job #2051705)
#include<fstream>
#include<unordered_map>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
const int NMAX=(1<<20)+5;
unsigned int v[NMAX],n,u,l;
void read_data(){
unsigned int i;
fin>>n>>l>>u;
for(i=1;i<=n;++i)
fin>>v[i];
}
unsigned long long cnt(int lim){
unordered_map<unsigned int,unsigned int>m;
unsigned int i,inf=1,different_els=0;
unsigned long long ans=0;
for(i=1;i<=n;++i){
if(!m[v[i]])
++different_els;
++m[v[i]];
while(different_els>lim){
--m[v[inf]];
if(!m[v[inf]]){
--different_els;
m.erase(v[inf]);
}
++inf;
}
ans+=(i-inf);
}
return ans;
}
int main(){
read_data();
fout<<cnt(u)-cnt(l-1);
}