Pagini recente » Cod sursa (job #783995) | Cod sursa (job #56327) | Cod sursa (job #1063729) | Cod sursa (job #3214965) | Cod sursa (job #1415993)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("nextseq.in");
ofstream fout("nextseq.out");
int n,m,p,i,j,t,st,dr,mid,aux;
int A[10005],B[10005],X[10005];
int CautBin(int a){
st=1;
dr=p;
while(st<=dr){
mid=(st+dr)/2;
if(a>X[mid])
st=mid+1;
else{
if(a==X[mid])
break;
dr=mid-1;
}
}
return mid; //nope,nush dc,pana acum nu facea
}
void add(int A[],int a){
A[1]+=a;
int i=1;
int t=0;
while(A[i]>p){
A[i+1]++;
A[i]%=p;
i++;
}
if(i>A[0])
A[0]=i;
return ;
}
bool cond(){
int ok=1;
if(A[0]!=B[0])
return 0;
for(i=1;i<=A[0];i++)
if(A[i]!=B[i]){
ok=0;
break;
}
return ok;
}
int main(){
fin>>p>>n>>m;
for(i=1;i<=p;i++)
fin>>X[i];
for(i=1;i<=n;i++)
fin>>A[i];
for(i=1;i<=m;i++)
fin>>B[i];
sort(X+1,X+p+1);
for(i=1;i<=n;i++){
A[i]=CautBin(A[i]);//ai dreptate
}
for(i=1;i<=m;i++){
B[i]=CautBin(B[i]);
}
for(i=1;i<=n/2;i++){
aux=A[i];
A[i]=A[n-i+1];//cred
A[n-i+1]=aux;
}
for(i=1;i<=m/2;i++){
aux=B[i];
B[i]=B[m-i+1];
B[m-i+1]=aux;
}
A[0]=n;
B[0]=m;
while(cond()==0){
t++;
add(A,1);
}
fout<<t-1;
return 0;
}