Cod sursa(job #1266914)

Utilizator vladrochianVlad Rochian vladrochian Data 19 noiembrie 2014 11:50:19
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
#include <unordered_map>
using namespace std;

const int kMaxN = 1050000;

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

int N, L, U;
unsigned int v[kMaxN];

long long Count(size_t lim) {
	unordered_map<unsigned int, int> ap;
	int st = 1;
	long long sol = 0;
	for (int i = 1; i <= N; ++i) {
		++ap[v[i]];
		while (ap.size() > lim) {
			--ap[v[st]];
			if (!ap[v[st]])
				ap.erase(v[st]);
			++st;
		}
		sol += i - st + 1;
	}
	return sol;
}

int main() {
	fin >> N >> L >> U;
	for (int i = 1; i <= N; ++i)
		fin >> v[i];
	fout << Count(U) - Count(L - 1) << "\n";
	return 0;
}