Cod sursa(job #1221143)

Utilizator cojocarugabiReality cojocarugabi Data 19 august 2014 17:17:07
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
# include <fstream>
# include <iostream>
using namespace std;
ifstream fi("secv5.in");
ofstream fo("secv5.out");
const int mod=666013;
typedef struct node
{
    int x;
    node *next;
} *nod;
nod h[mod];
int S[1<<21];
bool find(int x)
{
    int m=x%mod;
    for (nod p=h[m];p;p=p->next)
        if (p->x==x) return 1;
    nod p=new node;
    p->x=x;p->next=h[m];h[m]=p;
    return 0;
}
int secv(int x,int n)
{
    if (!x) return 0;
    int k=1,l=1;
    long long p=0;
    for (int i=1;i<=n;++i)
    {
        if (S[i]!=S[i-1]) ++l;
        if (l>x)
        {
            if (S[k]==S[k-1])
            while (S[k]==S[k-1]) ++k;else ++k;
            --l;
        }
        p+=(i-S[k]+1);
    }
    return p;
}
int main(void)
{
    S[0]=1;
    int p,u,n;
    fi>>n>>p>>u;
    for (int i=1;i<=n;++i)
    {
        int x;
        fi>>x;
        if (find(x)) S[i]=S[i-1]; else S[i]=i;
    }
    fo<<(secv(u,n)-secv(p-1,n))<<"\n";
}