Cod sursa(job #2130465)

Utilizator brczBereczki Norbert Cristian brcz Data 13 februarie 2018 18:20:25
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<bits/stdc++.h>

using namespace std;

ifstream fin("secv5.in");
ofstream fout("secv5.out");

#define cin fin
#define cout fout

const int maxn = (1<<21) + 4;
int n,l,r;
int a[maxn];
map<int,int> viz;

int get(int r) {

	int res = 0;
	int ptr2 = 0;
	int current = 0;
	viz.clear();
	for(int ptr1 = 0;ptr1<n;++ptr1) {

		while(ptr2 < n) {
			if(viz[a[ptr2]] == 0 && current == r) break;
			viz[a[ptr2]]++;
			if(viz[a[ptr2]] == 1) current++;
			ptr2++;
		}
		res += ptr2 - ptr1;
		viz[a[ptr1]]--;
		if(viz[a[ptr1]] == 0) current--;
	}
	return res;
}

signed main() {

	cin >> n >> l >> r;
	for(int i=0;i<n;++i) {
		cin >> a[i];
	}

	cout << get(r) - get(l-1) << '\n';

	return 0;
}