Cod sursa(job #2454756)

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

using namespace std;

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

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

unordered_map <unsigned int, unsigned int> H;

unsigned int v[DIM];

unsigned int n;

unsigned int get(unsigned int p)
{
	H.clear();
	
	unsigned int l = 1;
	H[v[1]] = 1;
	
	unsigned int nr = 1;
	unsigned int ans = 1;
	
	for(unsigned 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++;
		}
		
		unsigned int len = i - l + 1;
		
		ans += len;
	}
	
	return ans;
}

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