Pagini recente » Cod sursa (job #553504) | Cod sursa (job #3158418) | Cod sursa (job #1874902) | Cod sursa (job #1683193) | Cod sursa (job #148622)
Cod sursa(job #148622)
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
int N,
K,
D[500000];
int gaseste_prima_aparitie_a_lui(int x) {
for (int i(0); i < K; ++i)
if (D[i] == x)
return i + 1;
return 0;
}
int main(int argc, char *argv[]) {
FILE *fi = fopen("reguli.in", "r");
fscanf(fi, "%d", &N);
int last,
now;
fscanf(fi, "%d", &last);
for (int i(1); i < N; ++i) {
fscanf(fi, "%d", &now);
D[i - 1] = now - last;
last = now;
}
fclose(fi);
--N;
/*for (int i(0); i < N; ++i)
cout << D[i] << " ";
cout << endl;*/
K = 1;
int cur(0);
for (int i(1); i < N; ++i) {
if (D[i] == D[cur]) {
cur = (cur + 1) % K;
} else {
int d = gaseste_prima_aparitie_a_lui(D[i]);
cur = d; //TODO Schimba asta
K = i + 1 - d;
}
}
FILE *fo = fopen("reguli.out", "w");
fprintf(fo, "%d\n", K);
for (int i(0); i < K; ++i)
fprintf(fo, "%d\n", D[i]);
fclose(fo);
return 0;
}