Cod sursa(job #1535005)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 24 noiembrie 2015 10:41:45
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>

#define in "reguli.in"
#define out "reguli.out"
#define NMAX 500007
#define LL long long

using namespace std;
int n, sol;
LL v[NMAX], phi[NMAX];

inline void solve()
{
    int k = 0;
    for(int i = 2; i<= n; ++i)
    {
        while(k && v[k+1] != v[i]) k = phi[k];
        if(v[k+1] == v[i]) ++k;
        phi[i] = k;
    }
}

int main()
{
    freopen(in, "r", stdin);
    freopen(out, "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i<= n; ++i) scanf("%lld", &v[i]);
    for(int i = 2; i<= n; ++i) {v[i-1] -= v[i]; v[i-1]*=(-1);}
    --n;
    solve();
    sol = n - phi[n];
    printf("%d\n", sol);
    for(int i = 1; i<= sol; ++i) printf("%lld\n", v[i]);
    return 0;
}