Pagini recente » Cod sursa (job #351217) | Cod sursa (job #1361903) | Cod sursa (job #2761757) | Cod sursa (job #1200778) | Cod sursa (job #57522)
Cod sursa(job #57522)
#include <stdio.h>
#include <memory.h>
#define NMAX 10100
int n, m, p;
int x[NMAX], a[NMAX], b[NMAX];
void read(int a[NMAX], int n)
{
int i;
for(n; n> 0; --n)
{
scanf("%d ", &a[n]);
}
}
void sort()
{
int i, j, ok, aux;
do
{
ok = 0;
for(i = 0; i < n; ++i)
{
if(x[i] > x[i+1])
{
aux = x[i];
x[i] = x[i+1];
x[i+1] = aux;
ok = 1;
}
}
} while(ok);
}
void normalizeaza(int a[NMAX], int y)
{
int i;
int st, dr, m;
for(i = 1; i <= y; ++i)
{
st = 1;
dr = n;
while(st <= dr)
{
m = (st + dr)/2;
if(x[m] == a[i])
{
a[i] = m-1;
break;
}
else if(x[m] > a[i])
{
dr = m-1;
}
else
{
st = m+1;
}
}
}
}
void scadere(int a[NMAX], int b[NMAX])
{
int i, t;
long x = 0, pow = 1;
for(i = 1, t = 0; i <= m; ++i)
{
a[i] += (t = (a[i] -= b[i] + t) < 0) * n;
}
for(; m > 1 && !a[m]; --m);
for(i = 1; i <= m; ++i)
{
x += a[i] * pow;
pow *= n;
}
printf("%ld\n", x);
}
int main()
{
freopen("nextseq.in", "r", stdin);
freopen("nextseq.out", "w", stdout);
scanf("%d %d %d\n", &n, &m, &p);
read(x, n);
read(a, m);
read(b, p);
sort();
normalizeaza(a, m);
normalizeaza(b, p);
/*int i, aux[NMAX];
memset(aux, 0, sizeof(aux));
for(i = p; i > 0; --i)
aux[i] = b[p-i+1];
memcpy(b, aux, sizeof(aux));
*/
++a[1];
scadere(b, a);
fclose(stdin);
fclose(stdout);
return 0;
}