Cod sursa(job #1458432)

Utilizator valentin50517Vozian Valentin valentin50517 Data 7 iulie 2015 15:24:58
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
using namespace std;
#include<fstream>
#include<string.h>
FILE *f=fopen("reguli.in","r");
FILE *g=fopen("reguli.out","w");
 
long long int n;
long long int s[500002];
long long 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 ()
{
   long long int i,x,y,nr;
   fscanf(f,"%lld%lld",&n,&x);
 
   for(i=2; i<=n; i++)
   {
       fscanf(f,"%lld",&y);
       s[i-1]=y-x;
       x=y;
   }
 
   make_prefix();	
   x=n-1-pi[n-1];
   fprintf(g,"%lld\n",x);
   for(i=1;i<=x; i++) fprintf(g,"%lld\n",s[i]);
 
 
 
 
 
 
 
  return 0;
 
}