Cod sursa(job #857305)
| Utilizator | Data | 17 ianuarie 2013 18:20:57 | |
|---|---|---|---|
| Problema | Reguli | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <fstream>
#define MAX 500005
using namespace std;
int N, V[MAX], Pi[MAX];
int main()
{
ifstream in("reguli.in"); in>>N;
for(int i = 1; i <= N; i++) in>>V[i];
for(int i = 1; i < N; i++) V[i] = V[i + 1] - V[i];
N--;
for(int i = 2, q = 0; i <= N; i++)
{
while(q && V[q + 1] != V[i])
q = Pi[q];
if(V[q + 1] == V[i]) q++;
Pi[i] = q;
}
ofstream out("reguli.out");
N -= Pi[N];
out<<N<<"\n";
for(int i = 1; i <= N; i++) out<<V[i]<<"\n";
out.close();
return 0;
}
