Pagini recente » Cod sursa (job #2087132) | Cod sursa (job #1060517) | Cod sursa (job #1966648) | Cod sursa (job #214362) | Cod sursa (job #214071)
Cod sursa(job #214071)
#include <fstream>
#define MAX 1000010
using namespace std;
ifstream fin ("reguli.in");
ofstream fout ("reguli.out");
long long sir[MAX],rez[MAX];
int n,x,y,mx;
void citire()
{
fin>>n;
fin>>x;
for (int i=0;i<n-1;i++)
{
fin>>y;
sir[i]=y-x;
x=y;
}
}
void kmp()
{
rez[1]=0;
int 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 i=n-2;
while (rez[i])
i--;
if (i==n-2)
i=n-1;
fout<<i<<"\n";
for (int j=0;j<i;j++)
fout<<sir[j]<<"\n";
}
int main ()
{
citire();
kmp();
afisare();
return 0;
}