Pagini recente » Cod sursa (job #729255) | Cod sursa (job #205930) | Cod sursa (job #1337091) | Cod sursa (job #487959) | Cod sursa (job #3321743)
#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;
n--;
for (int i = 0; i <= n; i++)
fin >> v[i];
for (int i = n; i >= 1; i--)
v[i] -= v[i - 1];
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;
}