Pagini recente » Cod sursa (job #729639) | Cod sursa (job #367630) | Cod sursa (job #1382632) | Cod sursa (job #1138648) | Cod sursa (job #359892)
Cod sursa(job #359892)
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f,*s;
int m,n,p,i,j,v1[10005],v2[10005],v3[10005],v4[10];
void suma(int x[10005], int y[10005])
{
int T=0;
if(y[0]>x[0])
{
for (i=x[0]+1; i<=y[0]; i++) x[i]=0;
x[0]=y[0];
}
else
for (i=y[0]+1; i<=x[0]; i++) y[i]=0;
for (i=y[0]+1; i<=x[0]; i++) y[i]=0;
for (i=1;i<=x[0];i++)
{
x[i]+=y[i]+T;
T=x[i]/m;
x[i]%=m;
}
if (T)
{
x[0]++;
x[x[0]]=T;
}
}
int comparare(int H1[10005],int H2[10005])
{
while (H1[0] && !H1[H1[0]]) H1[0]--;
while (H2[0] && !H2[H2[0]]) H2[0]--;
if (H1[0] < H2[0])
return -1;
if (H1[0] > H2[0])
return +1;
for (int i = H1[0]; i > 0; --i)
{
if (H1[i] < H2[i])
return -1;
if (H1[i] > H2[i])
return +1;
}
return 0;
}
int main()
{
f=fopen("nextseq.in","r");
s=fopen("nextseq.out","w");
fscanf(f,"%d %d %d",&m,&n,&p);
for(i=m;i>=1;i--)
fscanf(f,"%d",&v1[i]);
for(i=n;i>=1;i--)
fscanf(f,"%d",&v2[i]);
for(i=p;i>=1;i--)
fscanf(f,"%d",&v3[i]);
sort(v1+1,v1+m+1);
for(i=1;i<=n;i++)
{
j=1;
while(v2[i]!=v1[j])
j++;
v2[i]=j;
}
v2[0]=n;
for(i=1;i<=p;i++)
{
j=1;
while(v3[i]!=v1[j])
j++;
v3[i]=j;
}
v3[0]=p;
v4[0]=1;
v4[1]=1;
int rez=0;
while(comparare(v2,v3)==-1)
{
suma(v2,v4);
rez++;
}
if(comparare(v2,v3)>=0)
rez--;
fprintf(s,"%d",rez);
fclose(s);
return 0;
}