Pagini recente » Cod sursa (job #925899) | Cod sursa (job #1031451) | Cod sursa (job #2009650) | Cod sursa (job #2955154) | Cod sursa (job #1203926)
#include <fstream>
using namespace std;
long long n,a[500005],z[500005];
int main()
{
ifstream in ("reguli.in");
ofstream out ("reguli.out");
in>>n;
for (int i=0;i<n;++i)
{
in>>a[i];
}
for (int i=0;i<n-1;++i) a[i]=a[i+1]-a[i];
n=n-1;
long long st=0,dr=0,per=n,advr=0;
for (int i=1;i<n;++i)
{
if (i<=dr)
{
z[i]=z[i-st];
if (z[i]>dr-i+1) z[i]=dr-i+1;
}
while(i+z[i]<n && a[z[i]]==a[z[i]+i]) ++z[i];
if (dr<i+z[i]-1) dr=i+z[i]-1,st=i;
if (z[i]==n-i && advr==0) per=i,advr=1;
}
out<<per<<"\n";
for (int i=0;i<per;++i) out<<a[i]<<"\n";
in.close();
out.close();
return 0;
}