Pagini recente » Cod sursa (job #2428479) | Cod sursa (job #1415154) | Cod sursa (job #539922) | Cod sursa (job #1881947) | Cod sursa (job #2630193)
#include <fstream>
using namespace std;
ifstream f ("reguli.in");
ofstream g ("reguli.out");
constexpr int NMAX = 5e5 + 5;
int dif[NMAX], phi[NMAX];
int N;
void Read ()
{
int old_x = 0;
f >> N >> old_x;
for (int i = 1; i < N; ++ i ) {
int x; f >> x;
dif[i-1] = x - old_x;
old_x = x;
}
--N;
}
void Construire_PHI ()
{
int rez = 0;
for (int i = 1; i < N; ++ i ) {
while (rez > 0 && dif[ i ] != dif[ rez ]) {
rez = phi[rez - 1];
}
if (dif[ i ] == dif[ rez ]) ++ rez;
phi[i] = rez;
}
}
int main()
{
Read();
Construire_PHI();
int ans = N - phi[N-1];
g << ans << '\n';
for (int i = 0; i < ans; ++ i ) {
g << dif[i] << '\n';
}
return 0;
}