Pagini recente » Cod sursa (job #2047960) | Monitorul de evaluare | Cod sursa (job #1862600) | Cod sursa (job #449770) | Cod sursa (job #1305762)
#include <fstream>
using namespace std;
const int MAX_N = 500002;
int N;
int Pi[MAX_N];
long long a[MAX_N], v[MAX_N];
int main() {
ifstream f("reguli.in");
ofstream g("reguli.out");
f >> N;
for(int i = 0; i < N; ++i) {
f >> a[i];
if(i > 0)
v[i] = a[i] - a[i - 1];
}
for(int i = 2; i < N; ++i) {
int p = Pi[i - 1];
while(p && v[p + 1] != v[i])
p = Pi[p];
if(v[p + 1] == v[i])
++p;
Pi[i] = p;
}
--N;
int ans = N - Pi[N];
g << ans << "\n";
for(int i = 1; i <= ans; ++i)
g << v[i] << "\n";
f.close();
g.close();
return 0;
}