Pagini recente » Cod sursa (job #1070054) | Cod sursa (job #1123911) | Cod sursa (job #1275458) | Cod sursa (job #1174728) | Cod sursa (job #551633)
Cod sursa(job #551633)
#include <fstream>
#include <algorithm>
using namespace std;
const char InFile[]="nextseq.in";
const char OutFile[]="nextseq.out";
const int MaxN=10111;
const int MaxX=10111;
ifstream fin(InFile);
ofstream fout(OutFile);
int N,M,P,x,sol,A[MaxN],B[MaxN],X[MaxN],V[MaxX];
inline bool myless()
{
if(M<P)
{
return true;
}
for(register int i=M;i>0;--i)
{
if(A[i]>B[i])
{
return false;
}
if(A[i]<B[i])
{
return true;
}
}
return false;
}
void inc()
{
for(register int i=1;i<=M;++i)
{
if(A[i]==N)
{
A[i]=1;
}
else
{
++A[i];
return;
}
}
A[++M]=1;
}
int main()
{
fin>>N>>M>>P;
for(register int i=1;i<=N;++i)
{
fin>>X[i];
}
sort(X+1,X+1+N);
for(register int i=1;i<=N;++i)
{
V[X[i]]=i;
}
for(register int i=1;i<=M;++i)
{
fin>>x;
A[i]=V[x];
}
for(register int i=1;i<=P;++i)
{
fin>>x;
B[i]=V[x];
}
fin.close();
for(register int i=1;i<=(M>>1);++i)
{
swap(A[i],A[M-i+1]);
}
for(register int i=1;i<=(P>>1);++i)
{
swap(B[i],B[P-i+1]);
}
inc();
while(myless())
{
inc();
++sol;
}
fout<<sol;
fout.close();
return 0;
}