Pagini recente » Cod sursa (job #2677286) | Cod sursa (job #2628913) | Cod sursa (job #389140) | Cod sursa (job #1933600) | Cod sursa (job #2725279)
#include <fstream>
using namespace std;
ifstream in("reguli.in");
ofstream out("reguli.out");
const int N = 5e5;
int dif[N+2],lps[N+2];
int main()
{
int n;
in>>n;
int x;
in>>x;
--n;
for(int i=1;i<=n;++i){
int y;
in>>y;
dif[i]=y-x;
x=y;
}
lps[1]=0;
int len=0,lmax=0;
for(int i=2;i<=n;++i){
while(len && dif[i]!=dif[len+1]){
len=lps[len-1];
}
if(dif[len+1]==dif[i]){
++len;
}
lps[i] = len;
}
lmax = n-lps[n];
out<<lmax<<'\n';
for(int i=1;i<=lmax;++i){
out<<dif[i]<<'\n';
}
return 0;
}