Cod sursa(job #1193424)
| Utilizator | Data | 31 mai 2014 18:37:28 | |
|---|---|---|---|
| Problema | Reguli | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <cstdio>
using namespace std;
#define NMAX 500005
#define LL long long
LL N,New,X,k,i,finish;
LL pi[NMAX],V[NMAX];
int main()
{
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%lld",&N);
--N;
scanf("%lld",&X);
for (i=1;i<=N;++i)
{
scanf("%lld",&New);
V[i]=New-X;
X=New;
}
for (i=2;i<=N;++i)
{
while (k && V[k+1]!=V[i]) k=pi[k];
if (V[k+1]==V[i]) ++k;
pi[i]=k;
}
finish=(N-pi[N]);
printf("%lld\n",finish);
for (i=1;i<=finish;++i) printf("%lld\n",V[i]);
return 0;
}
