Pagini recente » Cod sursa (job #1313154) | Cod sursa (job #2089394) | Cod sursa (job #149299) | Cod sursa (job #1019103) | Cod sursa (job #59647)
Cod sursa(job #59647)
#include <cstdio>
#include <cmath>
#include <cstdlib>
#define max 10001
FILE *in = fopen("nextseq.in","r"), *out = fopen("nextseq.out","w");
int m, n, p;
int X[max] = {0}, a[max] = {0}, b[max] = {0};
int norm[max] = {0};
int partition(int top, int bottom)
{
int x = X[top];
int i = top - 1;
int j = bottom + 1;
int temp;
do
{
do
{
--j;
} while ( x < X[j] );
do
{
++i;
} while ( x > X[i] );
if ( i < j )
{
temp = X[i];
X[i] = X[j];
X[j] = temp;
}
} while ( i < j );
return j;
}
void quicksort(int top, int bottom)
{
int middle;
if ( top < bottom )
{
middle = partition(top, bottom);
quicksort(top, middle);
quicksort(middle+1, bottom);
}
return;
}
void readinit()
{
fscanf(in, "%d %d %d", &n, &m, &p);
for ( int i = 0; i < n; ++i )
fscanf(in, "%d", &X[i]);
quicksort(0, n-1);
for ( int i = 0; i < n; ++i )
norm[X[i]] = i;
for ( int i = 0; i < m; ++i )
{
fscanf(in, "%d", &a[i]);
a[i] = norm[a[i]];
}
for ( int i = 0; i < p; ++i )
{
fscanf(in, "%d", &b[i]);
b[i] = norm[b[i]];
}
for ( int i = 0; i < m/2; ++i )
{
int t = a[i];
a[i] = a[m-i-1];
a[m-i-1] = t;
}
for ( int i = 0; i < p/2; ++i )
{
int t = b[i];
b[i] = b[p-i-1];
b[p-i-1] = t;
}
}
int main()
{
readinit();
// for ( int i = 0; i < p; ++i )
// printf("%d ", a[i]);
// printf("\n");
// for ( int i = 0; i < p; ++i )
// printf("%d ", b[i]);
// printf("\n");
int cnt = 0;
int sol[max] = {0};
int t = 0;
for ( int i = 0; i < p; ++i )
{
sol[t++] = b[i] - a[i];
}
for ( int i = 0; i < t; ++i )
cnt += sol[i]*pow(4,i);
fprintf(out, "%d\n", abs(cnt-1));
return 0;
}