Cod sursa(job #239718)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 5 ianuarie 2009 17:11:36
Problema Reguli Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <stdio.h>

long long A[500001];
int p[500001];

int main()
{
FILE *in = fopen("reguli.in","r");
FILE *out = fopen("reguli.out","w");

int n;
fscanf(in,"%d",&n);
int nr=n-1,i;
long long x;
fscanf(in,"%lld",&A[0]);

for (i=1;i<n;i++)
{
fscanf(in,"%lld",&x);
A[i] = x-A[0];
A[0]=x;
}

int k=0;
for (i=2;i<n;i++)
{
while (k>0 && A[k+1]!=A[i]) k = p[k];
if (A[k+1]==A[i]) k++;
p[i]=k;
if (k && A[1]==A[i+1]) nr=k;
}
fprintf(out,"%d\n",nr);
for (i=1;i<=nr;i++) fprintf(out,"%lld\n",A[i]);
}