Pagini recente » Cod sursa (job #1617974) | Cod sursa (job #880567) | Cod sursa (job #50573) | Cod sursa (job #1444319) | Cod sursa (job #979149)
Cod sursa(job #979149)
#include<fstream>
#include<algorithm>
using namespace std;
int N,M,P;
int A[10005];
int B[10005];
int S[10005];
int q[10005];
void increment(int *V)
{
++V[1];
for(int i=1;i<=V[0];i++)
if(V[i]==N+1)
{
++V[i+1]; V[i]-=N;
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()
{
ifstream fin("nextseq.in");
ofstream fout("nextseq.out");
fin>>N>>M>>P;
for(int i=1;i<=N;i++) fin>>S[i];
for(int i=1;i<=M;i++) fin>>A[i];
for(int i=1;i<=P;i++) fin>>B[i];
sort(S+1,S+N+1);
for(int i=1;i<=N;i++) q[S[i]]=i;
for(int i=1;i<=M;i++) A[i]=q[A[i]];
for(int i=1;i<=P;i++) B[i]=q[B[i]];
reverse(A+1,A+M+1);A[0]=M;
reverse(B+1,B+P+1);B[0]=P;
int result=0;
while(!equal(A,B))
{
increment(A);
++result;
}
fout<<result-1<<'\n';
return 0;
}