Cod sursa(job #1312138)
Utilizator | Data | 8 ianuarie 2015 22:31:53 | |
---|---|---|---|
Problema | Reguli | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <cstdio>
#define nmax 500005
using namespace std;
int v[nmax], nxt[nmax];
int x, y, i, n, q;
int main()
{
freopen("reguli.in", "rt", stdin);
freopen("reguli.out", "wt", stdout);
scanf("%d", &n);
scanf("%d", &x);
for(i=1; i<=n; ++i)
{
scanf("%d", &y);
v[i]=x-y;
x=y;
}
--n;
q=0;
for(i=2; i<=n; ++i)
{
while(q && v[i]!=v[q+1]) q=nxt[q];
if(v[i]==v[q+1]) ++q;
nxt[i]=q;
}
int qq=n-nxt[n];
printf("%d\n", qq);
for(i=1; i<=qq; ++i)
printf("%d\n", v[i]);
return 0;
}