Pagini recente » Cod sursa (job #3288134) | Cod sursa (job #1765962) | Cod sursa (job #2256625) | Cod sursa (job #1431982) | Cod sursa (job #951207)
Cod sursa(job #951207)
#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,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>>a[0]>>b[0];
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=a[0]; i>0; --i) f>>q, a[i]=poz[q];
for(int q, i=b[0]; i>0; --i) f>>q, b[i]=poz[q];
while(neegal(a,b)) add1(a);
g<<nr<<'\n'; g.close(); return 0;
}