Cod sursa(job #2751751)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 15 mai 2021 18:55:58
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
const int N = (1<<20)+1;
int v[N];

int main()
{

	unordered_map <int, int> lvec;
	unordered_map <int, int> uvec;
	ifstream cin("secv5.in");
	ofstream cout("secv5.out");

	unsigned int n,u,l;
	cin>>n>>l>>u;
	long long upoint=0;
	long long lpoint=0;

	long long ans=0;

	for(int i=0;i<(int)n;i++)
	{
		cin>>v[i];
		if(lvec.find(v[i])==lvec.end())
			lvec[v[i]]=1;
		else
			lvec[v[i]]++;
		if(uvec.find(v[i])==uvec.end())
			uvec[v[i]]=1;
		else
			uvec[v[i]]++;
		while(lpoint<=i and lvec.size()>=l)
		{
			if(lvec[v[lpoint]]==1)
					lvec.erase(v[lpoint]);
			else
				lvec[v[lpoint]]--;
			lpoint++;
		}
		while(upoint<=i and uvec.size()>u)
		{
			if(uvec[v[upoint]]==1)
				uvec.erase(v[upoint]);
			else
				uvec[v[upoint]]--;
			upoint++;
		}
		if(lpoint>upoint)
			ans+=lpoint-upoint;
	}
	cout<<ans<<'\n';
	return 0;
}