Pagini recente » Cod sursa (job #2189442) | Cod sursa (job #581303) | Cod sursa (job #2197950) | Cod sursa (job #66086) | Cod sursa (job #931042)
Cod sursa(job #931042)
#include<cstdio>
using namespace std;
#define MAX 500001
int N , maxx , poz , q , pi[MAX];
long long x[MAX] , a[MAX] ;
void citire();
void solve();
void tipar();
int main()
{
citire();
solve();
tipar();
return 0;
}
void citire()
{
freopen("reguli.in" , "r" , stdin );
scanf("%d" , &N);
for(int i = 0 ; i < N ; ++i )
scanf("%lld" , &x[i]);
}
void solve()
{
for(int i = 1 ; i <N ; ++i )
a[i]=x[i]-x[i-1];
q = 0;
for(int i = 2 ; i < N ; ++i )
{
while(a[i]!=a[q+1] && q)
q = pi[q];
if(a[i]==a[q+1])
++q;
pi[i] = q;
if(pi[i] > maxx)
{
maxx = pi[i];
poz = i;
}
}
}
void tipar()
{
freopen("reguli.out" , "w" , stdout );
printf("%d\n" , poz-pi[poz]);
for(int i = 1 ; i <= poz-pi[poz] ; ++i )
printf("%lld\n" , a[i]);
}