Cod sursa(job #1566199)

Utilizator sulzandreiandrei sulzandrei Data 11 ianuarie 2016 20:46:32
Problema Secventa 5 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <cmath>
#include <cstdio>
#include <cstdlib>
using namespace std;
ofstream out("secv5.out");
int v[(1<<20)+1],n;
unsigned long long  distsec(int nr)
{
    unordered_map<unsigned ,int> h;
    unsigned long long  sol = 0 ,
    to_remove = 1;
    for(int i= 1 ; i <= n ; i++)
    {
        h[v[i]]++;
        while(h.size()> nr)
        {
            h[v[to_remove]]--;
            if(h[v[to_remove]]==0)
                h.erase(v[to_remove]);
            to_remove++;
        }
        sol += i-to_remove +1;          //updatam numarul de subsiruri
    }
    return sol;
}
int main()
{
    FILE *f = fopen("secv5.in","r");
    int u,l;
    fscanf(f,"%i%i%i",&n,&u,&l);
    for(int i = 1  ; i <= n ; i++)
        fscanf(f,"%i",&v[i]);
    out <<distsec(l)- distsec(u-1);
    return 0;
}