Pagini recente » Cod sursa (job #3264664) | Cod sursa (job #2565337) | Cod sursa (job #1783431) | Cod sursa (job #2263336) | Cod sursa (job #1004933)
#include <cstdio>
using namespace std;
const int MAX_N=500100;
long long v[MAX_N];
int pi[MAX_N];
int n;
void prefix() {
pi[1]=0;
int p=0;
for(int i=2;i<=n;i++) {
while(p&&v[p+1]!=v[i]) {
p=pi[p];
}
if(v[p+1]==v[i]) {
p++;
}
pi[i]=p;
}
}
int main() {
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d",&n);
n--;
for(int i=0;i<=n;i++) {
scanf("%lld",&v[i]);
}
for(int i=n;i>=1;i--) {
v[i]=v[i]-v[i-1];
}
prefix();
int l=n;
while(pi[l]!=0) {
l=pi[l];
}
int ans=0;
if(n==l) {
printf("%d",n);
ans=n;
}
else {
printf("%d",(n-l)-pi[n-l]);
ans=(n-l)-pi[n-l];
}
printf("\n");
for(int i=1;i<=ans;i++) {
printf("%lld\n",v[i]);
}
return 0;
}