Cod sursa(job #948246)

Utilizator mitrutstrutMitrea Andrei Ionut mitrutstrut Data 9 mai 2013 19:06:56
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int nr,pc,n,m,p,v[1<<14],a[1<<14],b[1<<14],cor[1<<14];
void read()
{
    freopen("nextseq.in","r",stdin);
    freopen("nextseq.out","w",stdout);
    scanf("%d%d%d",&n,&m,&p);
    for(int i=1;i<=n;i++)
        scanf("%d",&v[i]);
    for(int i=1;i<=m;i++)
        scanf("%d",&a[m-i+1]);
    for(int i=1;i<=p;i++)
        scanf("%d",&b[p-i+1]);
}
void norm()
{
    sort(v+1,v+n+1);
    for(int i=1;i<=n;i++)
        cor[v[i]]=i;
    for(int i=1;i<=m;i++)
        a[i]=cor[a[i]];
    for(int i=1;i<=p;i++)
        b[i]=cor[b[i]];
}
int maxx(int x,int y)
{
    return x>y?x:y;
}
void next()
{
    int i,T;
    a[1]++;
    T=a[1]/(n+1);
    if(T)
        a[1]=1;
    for(i=2;T;i++)
    {
        a[i]++;
        T=a[i]/(n+1);
        if(T)
            a[i]=1;
    }
    m=maxx(i-1,m);
}
int main()
{
    read();
    norm();
    pc=p+1;
    while(1)
    {
        next();
        if(a[0]<b[0])
        {
            nr++;
            continue;
        }
        while(pc && a[pc-1]==b[pc-1])
            pc--;
        if(!pc)
            break;
        nr++;
    }
    printf("%d",nr);
    return 0;
}