Cod sursa(job #1573713)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 19 ianuarie 2016 21:27:00
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>

using namespace  std;

vector <long long> V;

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

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

		H[V[i]]++;
		nr++;

		if (d <= k)
			s += nr;
		else{
			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){
		int x;
		f >> x;
		V.push_back(x);
	}

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

	g << s;

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

	return 0;
}