Pagini recente » Cod sursa (job #2786641) | Cod sursa (job #610864) | Cod sursa (job #1035141) | Cod sursa (job #2170858) | Cod sursa (job #2458265)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int NMAX = 500005;
long long phi[NMAX];
long long v[NMAX];
long long n;
long long x;
void KermitManancaPrune()
{
memset(phi, 0, sizeof(phi));
phi[1] = 0;
for (long long i = 2; i <= n; i++)
{
long long x = i - 1;
while (v[phi[x] + 1] != v[i] && x)
x = phi[x];
if (v[phi[x] + 1] == v[i])
phi[i] = phi[x] + 1;
else
phi[i] = 0;
}
}
int main()
{
ifstream cin("reguli.in");
ofstream cout("reguli.out");
cin >> n;
long long val;
cin >> val;
n--;
for(long long i = 1 ; i <= n ; i++)
{
cin >> x;
v[i] = x - val;
val = x;
}
KermitManancaPrune();
cout << n-phi[n] << "\n";
for(long long i = 1 ; i <= n-phi[n] ; i++)
cout << v[i] << "\n";
return 0;
}