Cod sursa(job #1800188)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 7 noiembrie 2016 15:14:08
Problema Reguli Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
#include<string.h>
using namespace std;

FILE*f=fopen("reguli.in","r");
FILE*g=fopen("reguli.out","w");

long long n,x,y,i,j,k,v[500005],um[500005];

int main() {

    fscanf(f,"%d%d",&n,&x);
    for(i=2;i<=n;i++) {
        fscanf(f,"%d",&y);
        v[i-2]=y-x;
        x=y;
    }
    k=0; um[1]=0;
    for(i=2;i<=n-1;i++) {
        while(k>0&&v[k]!=v[i-1]) k=um[k];
        if(v[k]==v[i-1]) k++;
        um[i]=k;
    }
    fprintf(g,"%d\n",n-1-um[n-1]);
    for(i=0;i<n-1-um[n-1];i++) fprintf(g,"%d\n",v[i]);

    fclose(f); fclose(g);

    return 0;
}