Cod sursa(job #2479115)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 23 octombrie 2019 11:40:52
Problema Secventa 5 Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>
#include<unordered_map>
using namespace std;

const int NMAX=(1<<20)+10;

int n;
unsigned int v[NMAX];

long long nr_secv(const int &lg){
	long long nr_sol=0;
	unordered_map <unsigned int, int> mp;
	for(int i=1,j=1;j<=n;j++){
		mp[v[j]]++;
		while((int)mp.size()>lg){
			mp[v[i]]--;
			if(mp[v[i]]==0)
				mp.erase(v[i]);
			i++;
		}
		nr_sol=1LL*nr_sol+j-i+1;
	}
	return nr_sol;
}

int main(){
	freopen("secv5.in","r",stdin);
	freopen("secv5.out","w",stdout);
	int l,u;
	scanf("%d%d%d", &n, &l, &u);
	for(int i=1;i<=n;i++)
		scanf("%d", &v[i]);
	printf("%d", nr_secv(u)-nr_secv(l-1));
	return 0;
}