Cod sursa(job #2353159)
| Utilizator | Data | 23 februarie 2019 22:11:00 | |
|---|---|---|---|
| Problema | Reguli | Scor | 70 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.45 kb |
#include <bits/stdc++.h>
using namespace std;
int P[500010],X[500010],n;
int main(){
ifstream cin("reguli.in");
ofstream cout("reguli.out");
cin>>n;
for(int i=0;i<n;i++){
cin>>X[i];
if(i)X[i-1]=X[i]-X[i-1];
}
int p=0,l=n-1;
for(int i=1;i<l;i++){
while(p && X[i]!=X[p]){
p=X[p-1];
}
if(X[i]==X[p]){
p++;
}
P[i]=p;
}
l-=P[l-1];
cout<<l<<'\n';
for(int i=0;i<l;i++)cout<<X[i]<<'\n';
return 0;
}
