Cod sursa(job #2081312)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 4 decembrie 2017 16:23:34
Problema Secventa 5 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
/// OrangeWarrior #1
#include<bits/stdc++.h>
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
long long n,a,b,nr;
bool ok=0,ok2=0;
unsigned int v[(1<<20)+3];
long long secv(int b)
{
    unordered_map < unsigned , int > m;
    long long nr=0,i=1,j=1;
    int nrdif=0;
    for(i=1; i<=n; i++)
    {
        if(m[v[i]]==0)
            ++nrdif;
        m[v[i]]++;
        while(nrdif>b)
        {
            if(m[v[j]]==1)
                --nrdif;
            m[v[j]]--;
            j++;
        }
        nr+=(i-j+1);
    }
    return nr;
}
int main()
{
    f>>n>>a>>b;
    for(int i=1;i<=n;++i)
        f>>v[i];
    g<<secv(b)-secv(a-1);
    return 0;
}