Cod sursa(job #481263)

Utilizator APOCALYPTODragos APOCALYPTO Data 31 august 2010 00:13:37
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
using namespace std;
#include<iostream>
#include<fstream>
ofstream fout("reguli.out");
long long pi[500005],a[500005],N,ok[500005];
void solve()
{
 int i,k=0,L;
 pi[1]=0;
N--;
 for(i=2;i<=N;i++)
 {
while(k>0&&a[k+1]!=a[i])

k=pi[k];

if(a[k+1]==a[i]) k++;

pi[i]=k;



     //cout<<pi[i]<<" ";
 }
 ok[0]=1;
 int r,c;
for (r = N; r; r = pi[r])

ok[pi[r]] = 1;
  //cout<<" \n";
int sol=0;
  /*for(L=1;L<=N;L++)
  {

  r=N%L;c=N/L;

    if( ((N-r)%(N-r-pi[N-r])==0)
       && ok[r]
       &&pi[N-r]>0
       && ((N-r)/(N-r-pi[N-r])==c))
     {   sol=1;
         fout<<L<<"\n";
         break;
     }
  }*//*
  fout<<N-pi[N]<<"\n";*/
  if(sol==0)
     {L--;
     fout<<L<<" ";
     }
     for(i=1;i<=L;i++)
     fout<<a[i]<<"\n";
     //cout<<"\ok";*/
}

void cit()
{int i;
long long x,y;
    ifstream fin("reguli.in");
    fin>>N;
    fin>>x;
    for(i=1;i<=N-1;i++)
    {
        fin>>y;
        a[i]=y-x;
        x=y;
        //cout<<a[i]<<" ";

    }
    fin.close();
}

int main()
{
    cit();
    //cout<<"\n";
    solve();
    fout.close();
    return 0;
}