Cod sursa(job #1573824)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 19 ianuarie 2016 22:53:09
Problema Secventa 5 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>

using namespace  std;

vector <long long> V;

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

	for (int i = 0; i < V.size(); ++i){
		H[V[i]]++;
		nr++;

		if (H[V[i]] == 1)
			d++;

		while (d > k){
			if (H[V[i - nr + 1]] == 1)
				d--;
			H[V[i - nr + 1]]--;
			nr--;
		}

		s += nr;
	}

	return s;
}

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

	int n, l, u;

	f >> n >> l >> u;
	for (int i = 0; i < n; ++i){
		unsigned int x;
		f >> x;
		V.push_back(x);
	}

	unsigned int x, y, s;
	x = NrSec(u);
	y = NrSec(l - 1);
	s = x - y;

	g << s;

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

	return 0;
}