Pagini recente » Cod sursa (job #427681) | Cod sursa (job #1375116) | Cod sursa (job #2545690) | Cod sursa (job #3248234) | Cod sursa (job #76208)
Cod sursa(job #76208)
# include <stdio.h>
const long int MAXN=1000;
const long int MAXM=10000;
long int x[MAXN+1],place[MAXM+10],a[MAXN+1],b[MAXN+1],n,m,p;
void citire()
{
FILE *f=fopen("nextseq.in","r");
fscanf(f,"%ld%ld%ld",&n,&m,&p);
long int i;
for (i=1;i<=n;i++) fscanf(f,"%ld",&x[i]);
for (i=1;i<=m;i++) fscanf(f,"%ld",&a[m-i+1]);
for (i=1;i<=p;i++) fscanf(f,"%ld",&b[p-i+1]);
fclose(f);
}
void quick(long int li, long int lf)
{
long int i=li,j=lf,ii=0,jj=-1,aux;
while (i<j)
{
if (x[i]>x[j])
{
aux=x[i];x[i]=x[j];x[j]=aux;
aux=ii;ii=-jj;jj=-aux;
}
i+=ii;j+=jj;
}
if (i-li>1) quick(li,i-1);
if (lf-i>1) quick(i+1,lf);
}
void scrie(long int sol)
{
FILE *g=fopen("nextseq.out","w");
fprintf(g,"%ld\n",sol);
fcloseall();
}
int mai_mic()
{
long int i=p;
while (i)
{
if (b[i]>a[i]) return 1;
i--;
}
return 0;
}
int main()
{
citire();
quick(1,n);
long int i,skip=0;
for (i=1;i<=n;i++)
if (i>1&&x[i-1]==x[i]) skip++;
else place[x[i]]=i-skip;
n-=skip;
for (i=1;i<=m;i++) a[i]=place[a[i]];
for (i=1;i<=p;i++) b[i]=place[b[i]];
long int sol=0;
while (mai_mic())
{
a[1]++;
i=1;
while (a[i]>n)
{
a[i+1]+=a[i]/n;
a[i]%=n;
i++;
}
sol++;
}
scrie(sol-1);
return 0;
}