Pagini recente » Cod sursa (job #1980296) | Cod sursa (job #1267209) | Cod sursa (job #679676) | Cod sursa (job #467126) | Cod sursa (job #18500)
Cod sursa(job #18500)
#include <stdio.h>
#define input "reguli.in"
#define output "reguli.out"
#define dimmax 500001
long a[dimmax],k,n,poz[1001],first;
int main()
{
freopen(input,"r",stdin);
freopen(output,"w",stdout);
long i,j,x,y,ind;
scanf("%ld",&n);
scanf("%ld",&y);
scanf("%ld",&x);
a[1]=x-y;
y=x;
first=a[1];
poz[0]=1;
poz[1]=1;
for(i=3;i<=n;i++)
{
scanf("%ld",&x);
a[i-1]=x-y;
y=x;
if(a[i-1]==first)
poz[++poz[0]]=i-1;
}
poz[poz[0]+1]=n;
//determin k
if(poz[0]==1)
{
k=n-1;
printf("%ld\n",k);
for(i=1;i<n;i++)
printf("%ld\n",a[i]);
}
else
{
k=poz[2]-poz[1];
for(i=poz[2];i<n;i++)
{
ind=1;
for(j=i;j-i+1<=k&&j<n;j++)
if(a[j]!=a[j-i+1])
{
ind=0;
break;
}
i=j-1;
if(ind==0)
{
ind=1;
for(j;j<n;j++)
if(a[j]==first)
{
k=j-1;
i=j-1;
ind=0;
break;
}
if(ind)
{
k=n-1;
i=j-1;
}
}
}
}
//afisare
printf("%ld\n",k);
for(i=1;i<=k;i++)
printf("%ld\n",a[i]);
// for(i=1;i<=poz[0];i++)
// printf("%ld ",poz[i]);
return 0;
}