Cod sursa(job #2454749)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 9 septembrie 2019 20:14:53
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = (1 << 20) + 7;

unordered_map <int, int> H;

int v[DIM];

int n;

long long get(int p)
{
	H.clear();
	
	int l = 1;
	H[v[1]] = 1;
	
	int nr = 1;
	long long ans = 1;
	
	for(int i = 2; i <= n; i++)
	{
		if(H[v[i]] == 0)
		{
			nr++;
		}
		
		H[v[i]]++;
		
		while(l <= i && nr > p)
		{
			if(H[v[l]] == 1)
			{
				nr--;
			}
			
			H[v[l]]--;
			l++;
		}
		
		int len = i - l + 1;
		
		ans += len;
	}
	
	return ans;
}

main()
{
	int l, r;
	fin >> n >> l >> r;
	
	for(int i = 1; i <= n; i++)
		fin >> v[i];
	
	long long res = get(r);
	
	if(l != 1)
		res -= get(l - 1);
	
	fout << res;
}