Pagini recente » Istoria paginii runda/simulare-cartita-08 | Cod sursa (job #2842620) | Cod sursa (job #2482717) | Cod sursa (job #482198) | Cod sursa (job #1035919)
#include <cstdio>
using namespace std;
long long v[500010],v1[500010];
int n,i,k;
int main()
{
freopen("reguli.in", "r", stdin);
freopen("reguli.out", "w", stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%lld",&v[i]);
for(i=2;i<=n;i++) v[i-1]=v[i]-v[i-1];
n--;
k=0;
v1[1]=0;
for(i=2;i<=n;i++)
{
while(k && v[k+1]!=v[i]) k=v1[k];
if(v[k+1]==v[i]) k++;
v1[i]=k;
}
k=n-v1[n];
printf("%d\n",k);
for(i=1;i<=k;i++) printf("%lld\n",v[i]);
fclose(stdin);fclose(stdout);
return 0;
}