Pagini recente » Cod sursa (job #645571) | Cod sursa (job #2421432) | Cod sursa (job #2825022) | Cod sursa (job #391970) | Cod sursa (job #344309)
Cod sursa(job #344309)
#include <stdio.h>
#include <algorithm>
#define Nmax 10005
using namespace std;
int a[Nmax],b[Nmax],v[Nmax],next[Nmax];
int n,m,p,mx;
void reverse(int a[]){
for(int i=1,aux; i<=a[0]/2; ++i) aux=a[i], a[i]=a[a[0]-i+1], a[a[0]-i+1]=aux;
}
void read(){
int i;
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d%d%d",&n,&m,&p);
a[0]=m; b[0]=p;
for(i=1;i<=n;++i) scanf("%d",&v[i]), mx=max(mx,v[i]);
for(i=1;i<=m;++i) scanf("%d",&a[i]);
reverse(a);
for(i=1;i<=p;++i) scanf("%d",&b[i]);
reverse(b);
sort(v+1,v+n+1);
for(i=2;i<=n;++i) next[v[i-1]]=v[i];
next[v[n]]=v[1];
}
void do_next(int x){
if(x>a[0]){ a[++a[0]]=v[1]; }
else
if(a[x] == mx){
a[x]=next[a[x]];
do_next(x+1);
}
else a[x] = next[a[x]];
}
int compar(int a[],int b[]){
int i;
if(a[0] > b[0]) return 1;
if(a[0] < b[0]) return 0;
for(i=a[0];i>=1;--i)
if(a[i] > b[i]) return 1;
else
if(a[i] < b[i]) return 0;
return 1; // tre sa fie strict mai mic
}
void work(){
int ok,nr=0;
ok = compar(a,b);
while( !ok ){ // a<b
do_next(1);
ok = compar(a,b);
nr += !ok;
}
printf("%d\n",nr);
fclose(stdin); fclose(stdout);
}
int main(){
read();
work();
return 0;
}