Cod sursa(job #1555253)
| Utilizator | Data | 22 decembrie 2015 14:41:20 | |
|---|---|---|---|
| Problema | Reguli | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.47 kb |
#include<fstream>
using namespace std;
ifstream fin("reguli.in");
ofstream fout("reguli.out");
const int maxn=500005;
long long n,a[maxn],pr[maxn],k;
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
for(int i=2;i<=n;i++)
a[i-1]=a[i]-a[i-1];
n--;
pr[1]=0;
for(int i=2;i<=n;++i){
while(k>0 && a[k+1]!=a[i])
k=pr[k];
if(a[k+1]==a[i])
++k;
pr[i]=k;
}
fout<<n-pr[n]<<"\n";
for(int i=1;i<=n-pr[n];i++)
fout<<a[i]<<"\n";
return 0;
}
