Pagini recente » Cod sursa (job #1304454) | Monitorul de evaluare | Cod sursa (job #312509) | Cod sursa (job #2825186) | Cod sursa (job #8787)
Cod sursa(job #8787)
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int n1[10001];
int n2[10001];
int ncat;
int done;
int n,m,x;
int nre[10001];
int ind[10001];
int rep[10001];
bool cmpf( const int &a, const int &b )
{
if ( nre[ a ] <= nre[ b ] ) return 1;
return 0;
}
int main()
{
int i;
int aux;
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d %d %d\n", &x, &n, &m);
for ( i = 1; i <= x; i++ )
{
scanf("%d ", &nre[i] );
ind[i] = i;
}
sort( ind+1, ind+x+1, cmpf );
for ( i = 1; i <= x; i++ )
rep[ nre[ind[i]] ] = i;
for ( i = 1; i <= n; i++ )
{
scanf("%d ", &aux );
n1[n-i+1] = rep[ aux ];
}
n1[0] = n;
for ( i = 1; i <= m; i++ )
{
scanf("%d ", &aux );
n2[m-i+1] = rep[aux];
}
n2[0] = m;
while ( !done )
{
ncat++;
n1[1] ++;
for ( i = 1; i<= n1[0]; i++ )
if ( n1[i] > x )
{
n1[i+1] += 1;
n1[i] = 1;
if ( i == n1[0] && n1[i+1] )
n1[0]++;
}
done = 1;
for ( i = 0; i <= max( n1[0], n2[0] ); i++ )
if ( n1[i] != n2[i] ) done = 0;
}
printf("%d\n", ncat-1);
fclose(stdin);
fclose(stdout);
return 0;
}