Cod sursa(job #2420086)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 10 mai 2019 16:28:25
Problema Secventa 5 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream fin ("secv5.in");
ofstream fout ("secv5.out");
const int NMAX = 1 << 20 + 3;
unsigned int N, L, U;
unsigned int v [NMAX];
unordered_map <unsigned int, int> mp;
long long Solve (int k){
	mp.clear ();
	long long I = 1;
	long long ans = 0;
	for (int i = 1; i <= N; i ++){
		mp [v [i]] ++;
		while (mp.size() > k){
			mp [v [I]] --;
			if (mp [v [I]] == 0)
				mp.erase (v [I]);
			I ++;
		}
		ans += i - I + 1;
	}
	return ans;
}
int main (){
	fin >> N >> L >> U;
	for (int i = 1; i <= N; i ++)
		fin >> v[i];
	fout << Solve (U) - Solve (L - 1);
	return 0;
}