Cod sursa(job #91814)

Utilizator recviemAlexandru Pana recviem Data 13 octombrie 2007 15:14:32
Problema Reguli Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>

using namespace std;

    long n;
    long long v[500000],a[500000];

void citire()
{
    freopen("reguli.in","r",stdin);
    scanf("%ld\n",&n);
    scanf("%lld\n",&v[0]);
    for (int i=1;i<n;i++)
    {
        scanf("%lld\n",&v[i]);
        a[i-1]=v[i]-v[i-1];
    }
}

int subsir(int x,int y)
{
    for (int i=x;i<x+y;i++)
        if (a[i-x] != a[i])
            return 0;
    return 1;
}

int search(int k)
{
    for (int i=k;i<n-(n%k)-1;i += k)
        if (! subsir(i,k))
            return 0;
    return 1;
}

void scrie(long k)
{
    freopen("reguli.out","w",stdout);
    printf("%ld\n",k);
    for (int i=0;i<k;i++)
        printf("%lld\n",a[i]);
    fclose(stdout);
}

int main()
{
    citire();
    for (long k=1;k<n;k++)
        if (search(k))
        {
            scrie(k);
            return 0;
        }
    return 0;
}