Cod sursa(job #1403705)
| Utilizator | Data | 27 martie 2015 15:29:00 | |
|---|---|---|---|
| Problema | Reguli | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <fstream>
using namespace std;
#define NMax 500005
ifstream f("reguli.in");
ofstream g("reguli.out");
int n;
int v[NMax];
int pi[NMax];
void pref()
{
int i,q=0;
pi[1] = 0;
for(i=2;i<n;++i)
{
while(q && v[q+1]!=v[i]) q=pi[q];
if(v[q+1]==v[i]) q++;
pi[i] = q;
}
}
int main()
{
int i,a,b;
f>>n>>a;
for(i=1;i<n;++i)
{
f>>b;
v[i] = b-a;
a = b;
}
pref();
int mx = (n-1)-pi[n-1];
g<<mx<<"\n";
for(i=1;i<=mx;++i) g<<v[i]<<"\n";
f.close();
g.close();
return 0;
}
