Pagini recente » Cod sursa (job #3191251) | Cod sursa (job #1633796) | Cod sursa (job #2294306) | Cod sursa (job #2314223) | Cod sursa (job #1210466)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nextseq.in");
ofstream g("nextseq.out");
int N,M,P;
int Array[10005],Vcar[10005],A[10005],B[10005],one[]={1,1,0};
void Read()
{
int i;
f>>N>>M>>P;
for(i=1;i<=N;i++)
f>>Array[i];
sort(Array+1,Array+N+1);
}
void buildVcar()
{
int i;
for(i=1;i<=N;i++)
Vcar[Array[i]]=i;
}
void readAB()
{
int i;
for(i=1;i<=M;i++)
{
int value;
f>>value;
A[i]=Vcar[value];
}
for(i=1;i<=P;i++)
{
int value;
f>>value;
B[i]=Vcar[value];
}
reverse(A+1,A+M+1);
reverse(B+1,B+P+1);
A[0]=M;
B[0]=P;
}
void Add()
/* A <- A+B */
{ int i,T=0;
i=1;
while(A[i]==N)
{
A[i]=1;
++i;
}
A[i]++;
if(i>A[0])
A[0]=i;
if (T) A[++A[0]]=T;
}
bool isEqual()
{
int i;
if(A[0]!=B[0])
return 0;
for(i=1;i<=A[0];i++)
if(A[i]!=B[i])
return 0;
return 1;
}
void getResult()
{
int i,result=0;
bool ok=isEqual();
while(ok==0)
{
Add();
result++;
ok=isEqual();
}
g<<result-1<<"\n";
}
int main()
{
Read();
buildVcar();
readAB();
getResult();
return 0;
}