Pagini recente » Cod sursa (job #203848) | Cod sursa (job #1763986) | Cod sursa (job #1858614) | Cod sursa (job #1336335) | Cod sursa (job #1205841)
#include <stdio.h>
#define MAXN 10000
#define MAXNR 10001
int v[MAXN];
int eq[MAXNR + 1], baza = 0;
int a[MAXN], b[MAXN];
void sort(int n){
int i;
for(i = 0; i < MAXNR + 1; i++) eq[i] = 0;
for(i = 0; i < n; i++) eq[v[i]] = 1;
for(i = 0; i < MAXNR + 1; i++){
if(eq[i]){
eq[i] = baza;
baza++;
}
}
return ;
}
void diff(int *a, int *n, int *b, int m){
if(*n > m && a[(*n) - 1] == 0) a[(*n) - 1]++;
int i, trans = 0;
for(i = 0; i < *n; i++){
a[i] -= trans + b[i];
if(a[i] >= 0) trans = 0;
else{
trans = -((a[i] + 1) / baza) + 1;
a[i] += trans * baza;
}
}
i = (*n) - 1;
while(a[i] == 0){
(*n)--;
i--;
}
return ;
}
int bxtob10(int *a, int n){
int rez = 0, i, pw = 1;
for(i = 0; i < n; i++){
rez += a[i] * pw;
pw *= baza;
}
return rez;
}
int main(){
FILE *in = fopen("nextseq.in", "r");
int n, m, p;
fscanf(in, "%d%d%d", &n, &m, &p);
int i;
for(i = 0; i < n; i++){
fscanf(in, "%d", &v[i]);
}
sort(n);
int x;
for(i = 0; i < m; i++){
fscanf(in, "%d", &x);
a[m - i - 1] = eq[x];
}
for(i = 0; i < p; i++){
fscanf(in, "%d", &x);
b[p - i - 1] = eq[x];
}
fclose(in);
diff(b, &p, a, m);
int rez = bxtob10(b, p);
FILE *out = fopen("nextseq.out", "w");
if(rez != 0) fprintf(out, "%d", rez - 1);
else fprintf(out, "0");
fclose(out);
return 0;
}