Cod sursa(job #850560)
| Utilizator | Data | 8 ianuarie 2013 17:02:28 | |
|---|---|---|---|
| Problema | Reguli | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include<fstream>
using namespace std;
ifstream f("reguli.in");
ofstream g("reguli.out");
long long i,n,nr,v[500009],a[500009],urm[500009];
void prefix(long long a[])
{
int i,k=0;
urm[1]=0;
for(i=2;i<=n;++i)
{
while(k!=0&&a[i]!=a[k+1])
k=urm[k];
if(a[i]==a[k+1])
++k;
urm[i]=k;
}
}
int main()
{
f>>n;
for(i=1;i<=n;++i)
f>>v[i];
for(i=1;i<n;++i)
a[i]=v[i+1]-v[i];
--n;
prefix(a);
nr=n-urm[n];
g<<nr<<'\n';
for(i=1;i<=nr;++i)
g<<a[i]<<'\n';
return 0;
}
