Cod sursa(job #11260)

Utilizator mariusdrgdragus marius mariusdrg Data 30 ianuarie 2007 23:02:29
Problema NextSeq Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include<stdio.h>
#include<algorithm>

using namespace std;

const int maxn = 10000;


typedef short lnum[10000];

lnum a,b;
lnum sol;
short i;
short j;
short n2;
short n;
lnum s;
short n1;
short x;
short ans;
short nr[maxn];


bool cmpf(lnum &a,lnum b)
{
        if (a[0]!=b[0]) return false;
        for(i=1;i<=a[0];i++)
                if (a[i]!=b[i])  return false;
        return true;

}


int main()
{
        freopen("nextseq.in","r",stdin);
        freopen("nextseq.out","w",stdout);
        scanf("%hd %hd %hd",&n,&n1,&n2);
        for(i=1;i<=n;i++)
        {
                scanf("%hd",&a[i]);
        }
        sort(a+1,a+n+1);
        for(i=1;i<=n;i++)
        {
                nr[a[i]]=i-1;
        }
        memset(a,0,sizeof(a));
        a[0]=n1;
        for(i=1;i<=n1;i++)
        {
                scanf("%hd",&x);
                a[n1-i+1]=nr[x];
        }
        b[0]=n2;
        for(i=1;i<=n2;i++)
        {
                scanf("%hd",&x);
                b[n2-i+1]=nr[x];
        }
        for(i=n1+1;i<=n2;i++)
        {
                a[i]=-1;
        }
        s[0]=1;
        s[1]=1;
        while(cmpf(a,b)==false)
        {
                i=1;
                a[i]++;
                while(a[i]>=n)
                {
                        a[i]=0;
                        a[i+1]+=1;
                        i++;
                }
                if (i>a[0]) a[0]=i;

                ans++;
        }
        printf("%hd",ans-1);
        printf("\n");
        return 0;
}