Cod sursa(job #1539125)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 30 noiembrie 2015 12:05:22
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;

long long count_nr_shorter(const vector<unsigned int>& v, const long long len){
	long long rez = 0;
	unordered_map<unsigned int, int> nr_ap;
	for(long long dr = 0, st = 0; dr < v.size(); ++dr){
		++nr_ap[v[dr]];
		while(nr_ap.size() > len){
			--nr_ap[v[st]];
			if(nr_ap[v[st]] == 0){
				nr_ap.erase(v[st]); }
			++st; }
		rez += dr-st+1; }
	return rez; }

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

	long long n, l, u;
	f >> n >> l >> u;

	vector<unsigned int> v(n);
	for(auto& x : v){
		f >> x; }

	g << count_nr_shorter(v, u) - count_nr_shorter(v, l-1);
	return 0; }