Cod sursa(job #1727448)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 10 iulie 2016 20:56:20
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <unordered_map>
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("secventa5.in");
ofstream out("secventa5.out");
unordered_map <unsigned int, int> marcat;
const int maxn = (1 << 20) + 5;
unsigned int v[maxn];
int n, l, u;
long long count_substrings(int p)
{
    int num = 0;
    long long dim = 0;
    for(int st = 1, dr = 1; dr <= n; dr++)
    {
        if(!marcat[v[dr]])
            dim++;
        marcat[v[dr]]++;
        while(dim > p)
        {
            marcat[v[st]]--;
            if(!marcat[v[st]])
                dim--;
            st++;
        }
        num = num + dr - st + 1;
    }
    return num;
}
int main()
{
    in >> n >> l >> u;
    for(int i = 1; i <= n; i++)
        in >> v[i];
    long long aux = count_substrings(u);
    for(auto it : marcat)
        marcat[it.first] = 0;
    out << aux - count_substrings(l - 1) << "\n";
    return 0;
}