Cod sursa(job #1435939)

Utilizator BLz0rDospra Cristian BLz0r Data 14 mai 2015 19:49:24
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <unordered_map>
#include <algorithm>
using namespace std;

#define Nmax (( 1 << 20 ) + 1)

FILE *f = fopen ( "secv5.in", "r" );
FILE *g = fopen ( "secv5.out", "w" );

unordered_map < int, int > Hash;
int N, v[Nmax];

int Solve ( int x ){
    Hash.clear();

    int st = 1, ret = 0;

    for ( int dr = 1; dr <= N; ++dr ){
        Hash[v[dr]]++;
        while ( Hash.size() > x ){
            Hash[v[st]]--;
            if ( !Hash[v[st]] )
                Hash.erase(v[st]);
            st++;
        }
        ret += dr - st + 1;
    }
    return ret;
}

int main(){

    int L, U;

    fscanf ( f, "%d%d%d", &N, &L, &U );

    for ( int i = 1; i <= N; ++i )
        fscanf ( f, "%d", &v[i] );

    fprintf ( g, "%d", Solve ( U ) - Solve ( L - 1 ) );

    return 0;
}