Pagini recente » Cod sursa (job #2419926) | Cod sursa (job #2844328) | Cod sursa (job #2839907) | Cod sursa (job #982777) | Cod sursa (job #219259)
Cod sursa(job #219259)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("reguli.in");
ofstream fout("reguli.out");
int n=1,m,a[500001],poz[500001],sol;
void citire(){
fin>>m;
int x0;
fin>>x0;
int x;
for(int i=1;i<m;i++){
fin>>x;
a[n++]=x-x0;
x0=x;
// viz[x]++;
}
}
void prefix(){
int k=0;
for(int i=2;i<n;i++){
while(k&&a[k+1]!=a[i])
k=poz[k];
if(a[k+1]==a[i])
k++;
poz[i]=k;
if(poz[i])
if(!(i%(i-poz[i])))
sol=i;
}
}
void afis(){
for(int i=1;i<=sol;i++)
if(1==poz[i])
sol=i;
if(sol==0){
fout<<n-1<<"\n";
for(int i=1;i<n;i++)
fout<<a[i]<<"\n";
return;
}
fout<<sol-1<<"\n";
for(int i=1;i<sol;i++)
fout<<a[i]<<"\n";
}
int main(){
citire();
prefix();
afis();
fin.close();
fout.close();
return 0;
}