Cod sursa(job #33020)

Utilizator kyrkDragos Dumitrescu kyrk Data 18 martie 2007 20:28:37
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<stdio.h>
#include<string.h>
main()
{
long a[10001],b[10001],i,j,p,n,m,k,l,x[10001],s,d,t,sp,valid;
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
fscanf(stdin,"%ld%ld%ld",&p,&n,&m);
for(i=1;i<=p;i++)
 fscanf(stdin,"%ld",&x[i]);
memset(a,0,sizeof(a));
i=1;
do{  if(x[i]>x[i+1]) { sp=x[i];x[i]=x[i+1];x[i+1]=sp; i-=2; }
     i++;
     if(i<1)i=1;
   }while(i<p);
t=1;
for(i=(m-n)+1;t<=n;i++)
 {  fscanf(stdin,"%ld",&k);
    j=1;valid=0;
    do{    if(k==x[j]){ a[i]=j; valid=1; }
	   j++;
       }while(valid==0);
    t++;
 }
for(i=1;i<=m;i++)
 {  fscanf(stdin,"%ld",&k);
    j=1;valid=0;
    do{    if(k==x[j]){ b[i]=j; valid=1; }
	   j++;
       }while(valid==0);
 }
t=0;
do{
   i=m;
   do{
      valid=0;
      if(a[i]==p){i--;valid=1;}
      }while(valid==1);
   a[i]++; i++;
   do{
      if(i<=m)a[i]=1;
      i++;
      }while(i<=m);
   j=1;
   valid=1;
   do{
      if(a[j]!=b[j])valid=0;
      j++;
      }while((j<=m)&&(valid==1));
   t++;
   }while(valid==0);
t--;

fprintf(stdout,"%ld",t);
fclose(stdin);
fclose(stdout);
return 0;
}