Pagini recente » Cod sursa (job #496761) | Cod sursa (job #1250845) | Cod sursa (job #1615645) | Cod sursa (job #673589) | Cod sursa (job #1592764)
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<iostream>
using namespace std;
int a[10010],b[10010],c[10010];
int ret,x,N,M,P;
int caut(int x) {
int st = 1;
int dr = N;
while(st<=dr) {
int mij = (st+dr)/2;
if(c[mij] > x) dr = mij-1;
if(c[mij] < x) st = mij+1;
if(c[mij] == x) return mij;
}
return -1;
}
void scadere() {
int carry = 0;
for(int i=1;i<=P;++i) {
int x = b[i] - a[i] + carry;
b[i] = (x+N) % N;
carry = (x+N) / N-1;
}
if(carry) while(true);
}
int main() {
// freopen("input.in","r",stdin);
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d%d%d",&N,&M,&P);
for(int i=1;i<=N;++i) {
scanf("%d",&c[i]);
}
sort(c+1,c+N+1);
for(int i=1;i<=M;++i) {
scanf("%d",&x);
a[M+1-i]=caut(x);
}
for(int i=1;i<=P;++i) {
scanf("%d",&x);
b[P+1-i]=caut(x);
}
scadere();
for(int i=P;i>=1;--i) {
ret = ret*N + b[i];
}
if(ret > 100) while(true);
printf("%d",ret-1);
return 0;
}