Pagini recente » Cod sursa (job #702850) | Cod sursa (job #1411681) | Cod sursa (job #2886991) | Cod sursa (job #2278904) | Cod sursa (job #1205379)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin ("nextseq.in");
ofstream fout ("nextseq.out");
const int N = 1e4 + 5;
int m, n, sz, a[N], b[N], sol, nr[N];
vector <int> v;
bool diff(int a[], int b[]) {
if (a[0] != b[0])
return 1;
for (int i = 1; i <= a[0]; ++i)
if (a[i] != b[i])
return 1;
return 0;
}
void add(int a[], int x) {
int t = 1, i = 1;
for (; i <= a[0] || t; ++i, t /= sz) {
a[i] = (t += a[i]) % sz;
}
int aux = a[0];
a[0] = i-1;
if (aux != a[0])
a[a[0]] = 0;
}
int main() {
fin >> sz >> m >> n;
for (int x, i = 0; i < sz; ++i) {
fin >> x;
v.push_back(x);
}
sort (v.begin(), v.end());
v.resize (unique (v.begin(), v.end()) - v.begin());
sz = v.size();
for (vector <int> :: iterator it = v.begin(); it != v.end(); ++it)
nr[*it] = it - v.begin();
for (int x, i = 1; i <= m; ++i) {
fin >> x;
a[m - i + 1] = nr[x];
}
a[0] = m;
for (int x, i = 1; i <= n; ++i) {
fin >> x;
b[n - i + 1] = nr[x];
}
b[0] = n;
do {
add(a, 1);
sol++;
} while (diff (a, b) && sol < 105);
fout << sol - 1;
}