Cod sursa(job #543708)

Utilizator DraStiKDragos Oprica DraStiK Data 28 februarie 2011 15:13:08
Problema Sortari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <algorithm>
using namespace std;

#define MOD 999017
#define DIM 1005

int bst[DIM][DIM];
int f[DIM<<1];
int N,M,nrt;

void read ()
{
    int i;

    scanf ("%d",&N);

    f[0]=f[1]=1;
    for (i=2; i<=(N<<1); ++i)
        f[i]=(f[i-1]+f[i-2])%MOD;
}

void solve ()
{
    int i,j,k,sum_linie;

    bst[3][3]=sum_linie=1;
    for (i=4, M=3; i<=N; ++i, M+=2)
    {
        bst[i][1]=bst[i][2]=sum_linie;

        sum_linie=bst[i][1]+bst[i][2];
        for (j=3, k=M; j<=i; ++j, k-=2)
        {
            bst[i][j]=(bst[i][j-1]+f[k])%MOD;
            sum_linie=(sum_linie+bst[i][j])%MOD;
        }
    }
}

void print ()
{
    int i;

    for (i=1; i<=N; ++i)
        nrt=(nrt+bst[N][i])%MOD;

    printf ("%d",nrt);
}

int main ()
{
    freopen ("sortari2.in","r",stdin);
    freopen ("sortari2.out","w",stdout);

    read ();
    solve ();
    print ();

    return 0;
}