Pagini recente » Cod sursa (job #410016) | Cod sursa (job #501902) | Cod sursa (job #2205151) | Cod sursa (job #2322782) | Cod sursa (job #951190)
Cod sursa(job #951190)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nextseq.in"); ofstream g("nextseq.out");
typedef int Mare[10002];
int poz[10002];
Mare x,a,b;
int n,m,p,nr=-1;
void add1(Mare V)
{ int t=1;
++nr;
for (int i=1; t && i<=V[0]; ++i)
{ V[i]+=t;
if(V[i]>n) V[i]-=n, t=1; else t=0;
}
if(t) V[++V[0]]=t;
}
bool neegal(Mare A, Mare B)
{ if(A[0]!=B[0]) return true;
for(int i=1; i<= A[0]; ++i)
if(A[i]!=B[i]) return true;
return false;
}
int main()
{ f>>n>>m>>p;
for(int i=1; i<=n; ++i) f>>x[i];
sort(x+1,x+n+1);
for(int i=1; i<=n; ++i) poz[x[i]]=i;
for(int q, i=1; i<=m; ++i) f>>q, a[i]=poz[q];
reverse(a+1, a+m+1); a[0]=m;
for(int q, i=1; i<=p; ++i) f>>q, b[i]=poz[q];
reverse(b+1, b+p+1); b[0]=p;
while(neegal(a,b)) add1(a);
g<<nr<<'\n'; g.close(); return 0;
}