Pagini recente » Cod sursa (job #2724432) | Cod sursa (job #552236) | Cod sursa (job #750074) | Cod sursa (job #273370) | Cod sursa (job #219713)
Cod sursa(job #219713)
#include <stdio.h>
using namespace std;
long l,n,a[500002],p[500002];
void citire();
void prefix();
void afisare();
int main()
{
citire();
prefix();
afisare();
return 0;
}
void citire()
{
//ifstream f("reguli.in");
//f>>n;
freopen("reguli.in","r",stdin);
scanf("%ld",&n);
long x,y;
//f>>x;
scanf("%ld",&x);
for(int i=1;i<n;i++)
{
//f>>y;
scanf("%ld",&y);
a[i]=y-x;
x=y;
}
// f.close();
}
void afisare()
{
// ofstream g("reguli.out");
// g<<l<<endl;
freopen("reguli.out","w",stdout);
printf("%ld\n",l);
for(int i=1;i<=l;i++)
//g<<a[i]<<endl;
printf("%ld\n",a[i]);
// g.close();
}
void prefix()
{
int k=0;
for(int i=2;i<n;i++)
{
while(k&&a[k+1]!=a[i])
k=p[k];
if(a[k+1]==a[i])
k++;
p[i]=k;
if(k==0)
l=i;
else if(k<=p[i-1])
l=i-1;
}
}