Pagini recente » Cod sursa (job #2471370) | Cod sursa (job #3281430) | Cod sursa (job #192749) | Cod sursa (job #2621791) | Cod sursa (job #2179224)
#include<fstream>
using namespace std;
#define nMax 500004
long long series[nMax], a[nMax];
int pi[nMax], aLength, seriesLength, K;
void computePrefixFunction(long long pattern[], int patternLength){
int k = -1;
pi[0] = -1;
for(int i = 1; i < patternLength; ++i){
while( k > -1 && pattern[k+1] != pattern[i]){
k = pi[k];
}
if(pattern[k+1] == pattern[i]){
k = k + 1;
}
pi[i] = k;
}
}
int main(){
ifstream fin("reguli.in");
ofstream fout("reguli.out");
int N, i;
fin >> N;
for(i = 0; i < N; ++i){
long long number;
fin >> number;
series[seriesLength++] = number;
}
for(int i = 1; i < seriesLength; ++i){
a[aLength++] = series[i] - series[i - 1];
}
computePrefixFunction(a, aLength);
K = aLength - pi[aLength - 1] - 1;
fout << K << "\n";
for(i = 0; i < K; ++i){
fout << a[i] << "\n";
}
fin.close();
fout.close();
return 0;
}