Pagini recente » Cod sursa (job #1032230) | Cod sursa (job #479827) | Cod sursa (job #504482) | Cod sursa (job #794024) | Cod sursa (job #2224684)
#include <iostream>
#include <fstream>
using namespace std;
typedef long long lint; //I64
const int maxn = 5e5+5;
ifstream f("reguli.in");
ofstream g("reguli.out");
int n, i, ak;
lint v[maxn], dif[maxn];
lint prefix[maxn];
void prefix_calculate()
{
int i, a = 0;
prefix[1] = 0;
for(i = 2; i <= n-1; i ++)
{
while(a > 0 && dif[i] != dif[a+1])
a = prefix[a];
if(dif[i] == dif[a+1])
++a;
prefix[i] = a;
}
ak = n-1 - prefix[n-1];
}
int main()
{
f >> n >> v[1];
for(i = 2; i <= n; i ++){
f >> v[i];
dif[i-1] = v[i] - v[i-1];
}
prefix_calculate();
g << ak << '\n';
for(i = 1; i <= ak; i ++)
g << dif[i] << '\n';
return 0;
}