Cod sursa(job #1312148)
| Utilizator | Data | 8 ianuarie 2015 22:34:29 | |
|---|---|---|---|
| Problema | Reguli | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <cstdio>
#define nmax 500005
using namespace std;
long long v[nmax], nxt[nmax];
long long x, y, i, n, q;
int main()
{
freopen("reguli.in", "rt", stdin);
freopen("reguli.out", "wt", stdout);
scanf("%lld", &n);
scanf("%lld", &x);
for(i=1; i<=n; ++i)
{
scanf("%lld", &y);
v[i]=y-x;
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("%lld\n", v[i]);
return 0;
}
