Pagini recente » Cod sursa (job #496118) | Cod sursa (job #3159127) | Cod sursa (job #2558317) | Cod sursa (job #3004626) | Cod sursa (job #553031)
Cod sursa(job #553031)
#include<stdio.h>
#define maxN 10005
FILE*f=fopen("nextseq.in","r");
FILE*g=fopen("nextseq.out","w");
int Nx,N,M,i,Nr,Fr[maxN],Poz[maxN],A[maxN],B[maxN],z,X[maxN],Rez;
void add() {
if ( A[1] < Nx ){
++A[1];
return ;
}
A[1] = 1; int T = 1;
int i = 2;
while ( T && i <= N ){
if ( A[i] == Nx )
A[i] = 1;
else{
++A[i];
T = 0;
}
++i;
}
if ( i > N && T ) N = i,A[N] = 1;
}
int cmp () {
if ( N > M )
return 1;
if ( N < M )
return 0;
for ( int i = N ; i >= 1 ; --i ){
if ( A[i] < B[i] )
return 0;
if ( A[i] > B[i] )
return 1;
}
return 1;
}
int main () {
fscanf(f,"%d %d %d",&Nx,&N,&M);
for ( i = 1 ; i <= Nx ; ++i ){
fscanf(f,"%d",&Nr);
Fr[Nr] = 1;
}
Nx = 0;
for ( i = 0 ; i <= 10000 ; ++i ){
if ( Fr[i] ){
X[++Nx] = i;
Poz[i] = Nx;
}
}
for ( i = 1 ; i <= N ; ++i ){
fscanf(f,"%d",&z);
A[N-i+1] = Poz[z];
}
for ( i = 1 ; i <= M ; ++i ){
fscanf(f,"%d",&z);
B[M-i+1] = Poz[z];
}
for ( i = 1; i <= 102 ; ++i ){
add();
if ( cmp() ){
Rez = i - 1;
break;
}
}
fprintf(g,"%d\n",Rez);
fclose(f);
fclose(g);
return 0;
}