Pagini recente » Cod sursa (job #1527428) | Cod sursa (job #2759621) | Cod sursa (job #1208863) | Cod sursa (job #2990734) | Cod sursa (job #2458264)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int NMAX = 500005;
int phi[NMAX];
int v[NMAX];
int n;
int x;
void KermitManancaPrune()
{
memset(phi, 0, sizeof(phi));
phi[1] = 0;
for (int i = 2; i <= n; i++)
{
int 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;
int val;
cin >> val;
n--;
for(int i = 1 ; i <= n ; i++)
{
cin >> x;
v[i] = x - val;
val = x;
}
KermitManancaPrune();
cout << n-phi[n] << "\n";
for(int i = 1 ; i <= n-phi[n] ; i++)
cout << v[i] << "\n";
return 0;
}