Pagini recente » Cod sursa (job #1713110) | Cod sursa (job #1881362) | Cod sursa (job #929018) | Cod sursa (job #1368883) | Cod sursa (job #2562202)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 500005;
ifstream fin("reguli.in");
ofstream fout("reguli.out");
int lps[NMAX];
int N, x, y, V[NMAX];
void LPS()
{
lps[0] = 0;
for( int i = 1; i < N; ++i )
if( V[i] == V[lps[i-1]])
lps[i] = lps[i-1]+1;
else
{
int lg = lps[i-1];
while( lg && V[i] != V[lg] )
lg = lps[lg-1];
if( V[i] == V[lg] ) lps[i] = lg+1;
}
//for( int i = 0; i < N; ++i )cout << lps[i] << ' ';
}
void Solve()
{
fin >> N;
fin >> x;
for( int i = 1; i < N; ++i )
{
fin >> y;
V[i-1] = y-x;
x = y;
}N--;
LPS();
int P = N - lps[N-1];
fout << P << '\n';
for( int i = 0; i < P; ++i )
fout << V[i] << '\n';
}
int main()
{
Solve();
return 0;
}