Pagini recente » Cod sursa (job #3237659) | Cod sursa (job #2961522) | Cod sursa (job #2112467) | Cod sursa (job #90324) | Cod sursa (job #3321746)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("reguli.in");
ofstream fout ("reguli.out");
const int nmax = 5e5 + 5;
int n, v[nmax], lps[nmax];
void kmp ()
{
int k = 0;
for (int i = 1; i < n; i++)
{
while (k != 0 && v[i] != v[k])
k = lps[k-1];
if (v[i] == v[k])
k++;
lps[i] = k;
}
}
signed main()
{
fin >> n;
for (int i = 0; i < n; i++)
fin >> v[i];
for (int i = n - 1; i >= 1; i--)
v[i] -= v[i - 1];
n--;
for (int i = 0; i < n; i++)
v[i] = v[i + 1];
v[n] = 0;
kmp();
if (lps[n - 1] == 0)
{
fout << n << '\n';
for (int i = 0; i < n; i++)
fout << v[i] << '\n';
return 0;
}
int rez = n - lps[n - 1];
fout << rez << '\n';
for (int i = 0; i < rez; i++)
fout << v[i] << '\n';
return 0;
}