Cod sursa(job #2902557)

Utilizator IoanStoicaStoica Ioan IoanStoica Data 16 mai 2022 16:50:40
Problema Secventa 5 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
#include<vector>
#include<unordered_map>

int N,L,U;

using namespace std;

vector <long long> v;

unsigned long long solve(unsigned x){
	unordered_map<unsigned,int> val((1<<20)+10);
	unsigned l=0;
	unsigned long long sum=0;

	for(int i=0;i<N;i++){
		val[v[i]]++;
		while(val.size()>x){
			val[v[l]]--;
			if(val[v[l]]==0){
				val.erase(val.find(v[l]));
			}
			l++;
		}
		sum+=(i-l+1);
	}
	return sum;
}

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

    f>>N>>L>>U;
    v.resize(N);
    for(i=0; i<N; i++)
        f>>v[i];
    g<<solve(U)-solve(L-1);


    f.close();
    g.close();
    return 0;
}