Pagini recente » Cod sursa (job #2499382) | Cod sursa (job #1609312) | Cod sursa (job #2527525) | Cod sursa (job #1922228) | Cod sursa (job #2179223)
#include<fstream>
using namespace std;
#define nMax 500004
long pi[nMax], series[nMax], a[nMax], aLength, seriesLength, K;
void computePrefixFunction(long pattern[], long patternLength){
long k = -1;
pi[0] = -1;
for(long 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");
long N, i;
fin >> N;
for(i = 0; i < N; ++i){
long number;
fin >> number;
series[seriesLength++] = number;
}
for(long 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;
}