Cod sursa(job #1573856)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 19 ianuarie 2016 23:20:39
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
#define maxN 1<<20 + 5

using namespace  std;

unsigned int V[maxN];
int n;

long long NrSec(int k){
	unordered_map <unsigned int, int> H;
	long long s;
	int nr, d;
	s = nr = d = 0;

	for (int i = 0; i < n; ++i){
		H[V[i]]++;

		while (H.size() > k){
			H[V[nr]]--;

			if (H[V[nr]] == 0)
				H.erase(V[nr]);

			nr++;
		}

		s += i - nr + 1;
	}

	return s;
}

int main(){
	ifstream f("secv5.in"); 
	ofstream g("secv5.out");

	int l, u;

	f >> n >> l >> u;
	for (int i = 0; i < n; ++i)
		f >> V[i];

	g << NrSec(u) - NrSec(l-1);

	f.close();
	g.close();

	return 0;
}