Pagini recente » Cod sursa (job #114197) | Cod sursa (job #3254616) | Cod sursa (job #2346161) | Cod sursa (job #375669) | Cod sursa (job #2516848)
#include <iostream>
#include <fstream>
#define MAX 500010
using namespace std;
int n;
int x[MAX],a[MAX],pi[MAX];
void calc_pi(int v[MAX],int n){
pi[1]=0;
int la=0;
for(int i=2;i<=n;)
if(v[i]==v[la+1])pi[i++]=++la;
else
if(la!=0)la=pi[la];
else pi[i++]=0;
}
int main()
{
ifstream f ("reguli.in");
ofstream g ("reguli.out");
f>>n;
for(int i=1;i<=n;i++)f>>x[i];
for(int i=1;i<n;i++)a[i]=x[i+1]-x[i];
calc_pi(a,n-1);
// for(int i=1;i<n;i++)
// cout<<a[i]<<" ";
// cout<<'\n';
// for(int i=1;i<n;i++)cout<<pi[i]<<" ";
// cout<<n-1<<" "<<pi[n-1];
if(pi[n-1]>=(n-1)/2){
int per=n-1-pi[n-1];
g<<per<<'\n';
for(int i=1;i<=per;i++)
g<<a[i]<<'\n';
} else {
g<<n-1<<'\n';
for(int i=1;i<=n-1;i++)
g<<a[i]<<'\n';
}
f.close ();
g.close ();
return 0;
}