Pagini recente » Cod sursa (job #2567471) | Cod sursa (job #1470827) | Cod sursa (job #708948) | Cod sursa (job #1690219) | Cod sursa (job #214342)
Cod sursa(job #214342)
#include <fstream>
#define MAX 1000010
using namespace std;
ifstream fin ("reguli.in");
ofstream fout ("reguli.out");
long long sir[MAX],rez[MAX];
long long n,x,y,mx=1;
void citire()
{
fin>>n;
fin>>x;
for (int i=1;i<n;i++)
{
fin>>y;
sir[i]=y-x;
x=y;
}
n--;
}
inline int maxx(int a,int b)
{
return a>b?a:b;
}
void kmp()
{
rez[1]=0;
long long p=0;
for (int i=2;i<=n;i++)
{
while (p && sir[p+1]!=sir[i])
p=rez[p];
if (sir[p+1]==sir[i])
p++;
rez[i]=p;
}
}
void afisare()
{
int k=n;
while (k)
{
if (rez[k]==0)
{
mx=k;
break;
}
if (rez[k]<rez[k-1])
{
mx=rez[k-1];
break;
}
k--;
}
fout<<mx<<"\n";
for (int j=1;j<=mx;j++)
fout<<sir[j]<<"\n";
}
int main ()
{
citire();
kmp();
afisare();
return 0;
}