Pagini recente » Cod sursa (job #305891) | Cod sursa (job #154564) | Cod sursa (job #63645) | Diferente pentru arhiva intre reviziile 47 si 46 | Cod sursa (job #603606)
Cod sursa(job #603606)
#include <fstream>
using namespace std;
ifstream f("reguli.in");
ofstream g("reguli.out");
long long x,y;
long long v[500000];
int p[500000],n,i,poz;
void prefix()
{
int k,i;
p[1]=0;
for (i=2; i<=poz; i++)
{
while (k>0 && v[k+1]!=v[i]) k=p[k];
if (v[k+1]==v[i]) k++;
p[i]=k;
}
g << poz-p[poz] << endl;
for (i=1; i<=poz-p[poz]; i++)
g << v[i] << '\n';
}
int main()
{
f >> n >> x;
for (i=1; i<n; i++)
{
f >> y;
v[++poz]=y-x;
x=y;
}
prefix();
}