Cod sursa(job #1790592)

Utilizator grimmerFlorescu Luca grimmer Data 28 octombrie 2016 14:52:03
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <unordered_map>
using namespace std;

ifstream fin("secv5.in");
ofstream fout("secv5.out");
const int NMAX = 1048579;

unordered_map<int, int> um;
int n, l, u, v[NMAX + 5], dist[NMAX + 5];

int main()
{
    int i, elem, lf = 1, curr_dist, rez = 0, j = 1;
    fin>>n>>l>>u;

    for(i = 1; i <= n; ++i){
        fin>>elem;
        v[i] = elem;
        if(um.count(v[i]) == 0){
            dist[i] = dist[i - 1] + 1;
        }
        else{
            dist[i] = dist[i-1];
        }

        ++um[v[i]];
    }

    for(i = 1; i <= n; ++i){
        curr_dist = dist[i] - dist[lf] + 1;

        while(curr_dist > u){
            ++lf;
            curr_dist = dist[i] - dist[lf] + 1;
        }

        if(curr_dist >= l && curr_dist <= u){
            j = lf;

            while(curr_dist >= l){
                ++rez;
                ++j;
                curr_dist = dist[i] - dist[j] + 1;
            }

        }

    }

    fout<<rez;
    return 0;
}