Cod sursa(job #1443758)

Utilizator adina0822Ciubotaru Adina-Maria adina0822 Data 28 mai 2015 16:48:12
Problema Reguli Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
using namespace std;
#include<fstream>
#include<string.h>
FILE *f=fopen("reguli.in","r");
FILE *g=fopen("reguli.out","w");

int n;
int s[500002];
int pi[500002];

void make_prefix()
{
    int q=0,i;
    for(pi[1]=0,i=2; i<=n-1; i++)
    {
        while(q && s[i]!=s[q+1])
        q=pi[q];
        if(s[i]==s[q+1])
        q++;
        pi[i]=q;
    }

}

int main ()
{
   int i,x,y,nr;
   fscanf(f,"%d%d",&n,&x);

   for(i=2; i<=n; i++)
   {
       fscanf(f,"%d",&y);
       s[i-1]=y-x;
       x=y;
   }

   make_prefix();

   i=n-1;
   while(pi[i])
   i--;

   fprintf(g,"%d\n",i);
   for(x=1;x<=i; x++) fprintf(g,"%d\n",s[x]);







  return 0;

}