Cod sursa(job #3185576)

Utilizator ultra980Alex Stan ultra980 Data 19 decembrie 2023 17:59:28
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <unordered_map>
using namespace std;
long long v[ 1048577 ];
int n;
long long count ( int x ) {
    int l , r , nr;
    unordered_map <long long , int> frecv;
    long long ans;
    l = r = nr = ans = 0;
    while ( r < n ){
        frecv[ v[ r ] ]++;
        if ( frecv[ v[ r ] ] == 1 )
            nr++;
        r++;
        while ( nr > x ) {
            frecv[ v[ l ] ]--;
            if ( frecv[ v[ l ] ] == 0 )
                nr--;
            l++;
        }
        ans += r - l;
    }
    return ans;
}
int main() {
    ifstream cin ( "secv5.in" );
    ofstream cout ( "secv5.out" );
    int x , y , i;
    cin >> n >> x >> y;
    for ( i = 0 ; i < n ; i++ )
        cin >> v[ i ];
    cout << count ( y ) - count ( x - 1 ) << '\n';
    return 0;
}