Cod sursa(job #2140951)

Utilizator danutmafteiMaftei Danut danutmaftei Data 23 februarie 2018 23:54:02
Problema Reguli Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <string.h>
#define Nmax 1000005

using namespace std;
ifstream fin("reguli.in");
ofstream fout("reguli.out");

int T;
int pre[Nmax];
int sir[Nmax];
int n;

void citire()
{
    fin>>T;

    int x;
    fin>>x;
    T--;
    n=0;
    while(T--)
    {
        int y;
        fin>>y;
        sir[++n]=y-x;
        x=y;
    }

    fin.close();
}

void prefix(int n)
{ int k=0;

    for(int i=2;i<=n;++i)
    {
        while(k>0 && sir[k+1]!=sir[i])
            k=pre[k];

            if(sir[k+1]==sir[i])++k;
            pre[i]=k;
    }
    fout<<n-pre[n-1]-1<<"\n";
    for(int i=1;i<=n-pre[n-1]-1;++i)
        fout<<sir[i]<<"\n";

}




int main()
{
   citire();
   prefix(n);
    return 0;
}