Pagini recente » Cod sursa (job #2457239) | Cod sursa (job #1713540) | Cod sursa (job #2149137) | Cod sursa (job #828) | Cod sursa (job #1755804)
#include<iostream>
#include<fstream>
#define DX 500010
using namespace std;
fstream fin("strmatch.in",ios::in),fout("strmatch.out",ios::out);
long long n,x[DX],a[DX],pre[DX],pozf=1;
void citire();
void scrie();
void mkpre();
int main()
{
citire();
mkpre();
scrie();
}
void scrie()
{
pozf=n-1;
fout<<pozf<<"\n";
for(int i=1;i<=pozf;i++) fout<<a[i]<<"\n";
}
void mkpre()
{
int i,poz=0;
for(i=1;i<n;i++)
a[i]=x[i]-x[i-1];
for(i=2;i<n;i++)
{
while(poz && a[poz+1]!=a[i]) poz=pre[poz];
if(a[poz+1]==a[i]) poz++;
pre[i]=poz;
if(pre[i]==0) pozf=i;
}
}
void citire()
{
fin>>n;
for(int i=0;i<n;i++)
fin>>x[i];
}