Cod sursa(job #2306621)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 22 decembrie 2018 17:37:14
Problema Secventa 5 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>
#define N 1100000

using namespace std;

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

unsigned int v[N] ,n;

long long f(long long k)
{
    unordered_map<unsigned int,int> mp;
    int i = 1 , j ;
    long long sol =0 ;
    for ( j = 1 ; j <= n ; j++ )
    {
        mp[v[j]]++ ;
        while ( mp.size() > k )
        {
            mp[v[i]]-- ;
            if ( mp[v[i]] == 0 )
                mp.erase(v[i]) ;
            i++;
        }
        sol = 1LL*sol + j-i+1 ;
    }
    return sol ;
}

int main()
{
    unsigned int l , r , x , i ;
    fin >> n >> l >> r ;
    for ( i = 1 ; i <= n ; i++ )
    {
        fin >> x ;
        v[i] = x ;
    }
    fout << f(r)-f(l-1) ;
    return 0 ;
}