Pagini recente » Cod sursa (job #1701875) | Cod sursa (job #167633) | Cod sursa (job #1854268) | Cod sursa (job #179377) | Cod sursa (job #1325037)
#include <fstream>
#include <algorithm>
const int NMAX = 10005;
using namespace std;
ifstream f("nextseq.in");
ofstream g("nextseq.out");
int N,M,P,X[NMAX],A[NMAX],B[NMAX],pos[NMAX],answer;
void increment(int* V)
{
V[1]++;
for (int i = 1; i <= V[0]; ++i)
{
if (V[i] > N)
{
V[i+1]++;
V[i] = 1;
if (i == V[0])
V[0]++;
}
}
}
bool equal(int* V1, int* V2)
{
if (V1[0] != V2[0])
return false;
for (int i = 1; i <= V1[0]; ++i)
{
if (V1[i] != V2[i])
return false;
}
return true;
}
int main()
{
f >> N >> M >> P;
for (int i = 1; i <= N; ++i)
f >> X[i];
for (int i = 1; i <= M; ++i)
f >> A[i];
for (int i = 1; i <= P; ++i)
f >> B[i];
sort(X+1,X+N+1);
for (int i = 1; i <= N; ++i)
pos[X[i]] = i;
for (int i = 1; i <= M; ++i)
A[i] = pos[A[i]];
for (int i = 1; i <= P; ++i)
B[i] = pos[B[i]];
reverse(A+1,A+M+1);
reverse(B+1,B+P+1);
A[0] = M;
B[0] = P;
while(!equal(A,B))
{
increment(A);
answer++;
}
g << answer-1;
f.close();
g.close();
return 0;
}