Cod sursa(job #239701)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 5 ianuarie 2009 16:35:33
Problema Reguli Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <stdio.h>

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

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


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

for (i=1;i<n;i++)
{
fscanf(in,"%d",&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 (p[i] && A[1]==A[i+1]) if (p[i]<nr) nr=p[i];
}
fprintf(out,"%d\n",nr);
for (i=1;i<=nr;i++) fprintf(out,"%d\n",A[i]);
}