Pagini recente » Cod sursa (job #3132333) | Cod sursa (job #1522704) | Cod sursa (job #3255088) | Cod sursa (job #1421061) | Cod sursa (job #1975139)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
typedef vector <long long> vll;
ifstream f("reguli.in");
ofstream g("reguli.out");
vll dif(1,0),p(500001,0);
int N;
void prefix(){
int k=0;
p[1]=0;
for(int i=2;i<=N;i++){
while( k && dif[i]!=dif[k+1])k=p[k];
if(dif[i]==dif[k+1])k++;
p[i]=k;
//cout<<k<<' ';
}
}
int main(){
f>>N;
N--;
int x0,x;
f>>x0;
for(int i=1;i<=N;i++){
f>>x;
dif.push_back(x-x0);
// cout<<dif[i]<<'\n';
x0=x;
}
prefix();
int lg=N-p[N];
for(vector<long long>::iterator it=dif.begin()+1;it!=dif.begin()+lg+1;it++)
g<<*it<<'\n';
/*
if(p[N]%(N-p[N])){
g<<N<<'\n';
for(vector<long long>::iterator it=dif.begin()+1;it!=dif.end();it++)
g<<*it<<'\n';
}
else {
int lg=N-p[N];
g<<lg<<'\n';
for(vector<long long>::iterator it=dif.begin()+1;it!=dif.begin()+lg+1;it++)
g<<*it<<'\n';
}
*/
}