Pagini recente » Cod sursa (job #1695051) | Cod sursa (job #704866) | Cod sursa (job #1220532) | Cod sursa (job #1672298) | Cod sursa (job #46948)
Cod sursa(job #46948)
#include <stdio.h>
#include <stdlib.h>
#define Nmax 10002
long N,M,P,i,j,a[Nmax];
long v[Nmax],nrsol,s1[Nmax],s2[Nmax],aux[Nmax];
int comp(void const* a,void const* b){
return *(long*)a-*(long*)b;
}
int solutie(){
int i;
if (M<P)return 1;
if (M>P)return 0;
for (i=P;i>=1;i--){
if (s1[i]<s2[i])return 1;
if (s1[i]>s2[i])return 0;
}
return 0;
}
int main(){
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d %d %d",&N,&M,&P);
for (i=1;i<=N;i++)scanf("%d",&a[i]);
for (i=1;i<=M;i++)scanf("%d",&s1[i]);
for (i=1;i<=P;i++)scanf("%d",&s2[i]);
a[0]=-1;
qsort(a,N+1,sizeof(long),comp);
for (i=1;i<=N;i++)v[a[i]]=i;
for (i=1;i<=M;i++)aux[i]=v[s1[M-i+1]];
for (i=1;i<=M;i++)s1[i]=aux[i];
for (i=1;i<=P;i++)aux[i]=v[s2[P-i+1]];
for (i=1;i<=P;i++)s2[i]=aux[i];
nrsol=0;
s1[1]++;
for (i=1;i<=M;i++)if (s1[i]>N){s1[i]=1;s1[i+1]++;if (i==M)M++;}
while (solutie()){
//for (i=M;i>=1;i--)printf("%d ",s1[i]);
//printf("\n");
nrsol++;
s1[1]++;
for (i=1;i<=M;i++)if (s1[i]>N){s1[i]=1;s1[i+1]++;if (i==M)M++;}
}
printf("%d\n",nrsol);
return 0;
}