Cod sursa(job #3142218)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 20 iulie 2023 10:51:51
Problema Secventa 5 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;

ull solve(const vector<int>& v, int nr)
{
	unordered_map<int, int> mp;
	int left = 0;
	ull ans = 0;
	
	for(int i = 0;i < v.size();++i)
	{
		++mp[v[i]];
		while(mp.size() > nr)
		{
			--mp[v[left]];
			if(mp[v[left]] == 0)
				mp.erase(v[left]);
			++left;
		}
		ans += i - left + 1;
		
	}
	return ans;
}

int main() {
	freopen("secv5.in", "r", stdin);
	freopen("secv5.out", "w", stdout);
	int n, l, u;
	cin >> n >> l >> u;
	vector<int> v(n);
	for(int i = 0;i < n;++i)
		cin >> v[i];
	if(l == 1)
		cout << solve(v, u) << "\n";
	else
		cout << solve(v, u) - solve(v, l - 1) << "\n";
}