Pagini recente » Cod sursa (job #2067598) | Cod sursa (job #2153852) | Cod sursa (job #641031) | Cod sursa (job #2264717) | Cod sursa (job #2242396)
#include <fstream>
#include <vector>
#define NMAX 500005
using namespace std;
ifstream in("reguli.in");
ofstream out("reguli.out");
long long nums[NMAX], prefix[NMAX];
int n;
long long ak;
void read_data(int &p){
p = 0;
int x, y;
in >> n >> x;
for(int i = 0; i<n; i++){
in >> y;
nums[++p] = y - x;
x = y;
}
p --;
}
void construct_prefix(long long nums[], long long v[], int n){
int k = 0;
v[1] = 0;
for(int i = 2; i<=n; i++){
while(k > 0 && nums[i] != nums[k + 1]){
k = v[k];
}
if(nums[k + 1] == nums[i]){
k ++;
}
v[i] = k;
}
ak = n - v[n];
}
int main(){
int p;
read_data(p);
construct_prefix(nums, prefix, p);
out << ak << '\n';
for(int i =1 ; i<=ak; i++){
out << nums[i] << '\n';
}
return 0;
}