Pagini recente » Cod sursa (job #2015817) | Istoria paginii utilizator/diana-t95 | Cod sursa (job #2457) | Cod sursa (job #2756844) | Cod sursa (job #2148775)
#include <cstdio>
#include <algorithm>
const int MAXN = 1e4;
int a[MAXN + 1], b[MAXN + 1], v[MAXN + 1], x[MAXN + 1];
void sub(int *a, int *b, int n) {
int t = 0;
for (int i = 1; i <= a[0]; ++i) {
a[i] -= ((i <= b[0]) ? b[i] : 0) + t;
a[i] += (t = a[i] < 0) * n;
}
for (; a[0] > 1 && !a[a[0]]; --a[0]);
}
int main() {
FILE *fin, *fout;
int n, m, p, w, ans, pow;
fin = fopen("nextseq.in", "r");
fscanf(fin, "%d%d%d", &n, &m, &p);
for (int i = 1; i <= n; ++i) {
fscanf(fin, "%d", &v[i]);
}
std::sort(v + 1, v + n + 1);
for (int i = 1; i <= n; ++i) {
x[v[i]] = i;
}
a[0] = m;
for (int i = a[0]; i > 0; --i) {
fscanf(fin, "%d", &w);
a[i] = x[w];
}
b[0] = p;
for (int i = b[0]; i > 0; --i) {
fscanf(fin, "%d", &w);
b[i] = x[w];
}
fclose(fin);
sub(b, a, n);
ans = 0;
pow = 1;
for (int i = 1; i <= b[0]; ++i) {
ans += b[i] * pow;
pow *= n;
}
fout = fopen("nextseq.out", "w");
fprintf(fout, "%d\n", ans - 1);
fclose(fout);
return 0;
}