Cod sursa(job #988577)

Utilizator misinozzz zzz misino Data 23 august 2013 12:10:00
Problema Secventa 5 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
#include<vector>
#define MOD 666013
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
int i,n,l1,l2,nr1,nr2,x,nr,l,u,v1[1100000],v2[1100000],nor[1100000];
long long sol;
vector<pair<int,int> >has[MOD];
inline int ha(int x)
{
    int key=x%MOD;
    for(unsigned int i=0;i<has[key].size();++i)
    {
        if(has[key][i].first==x)
        return has[key][i].second;
    }
    ++nr;
    has[key].push_back(make_pair(x,nr));
    return nr;
}
int main()
{
    f>>n>>l>>u;
    for(i=0;i<n;++i)
    {
        f>>x;
        nor[i]=ha(x);

    }
    l1=l2=0;
    nr1=nr2=0;
    for(i=0;i<n;++i)
    {
        while(l1<n&&nr1<l)
        {
            nr1+=!v1[nor[l1++]]++;
        }
        while(l2<n&&nr2+!v2[nor[l2]]<=u)
        {
            nr2+=!v2[nor[l2++]]++;
        }
        if(nr1>=l)
        sol+=(l2-l1+1);
        nr1-=!--v1[nor[i]];
        nr2-=!--v2[nor[i]];
    }
    g<<sol<<'\n';
    return 0;
}