Cod sursa(job #7031)

Utilizator varuvasiTofan Vasile varuvasi Data 21 ianuarie 2007 11:55:56
Problema 1-sir Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 0.95 kb
#include <stdio.h>
#include <string.h>
#define MaxS 1100

#define MaxN 101

int N, S;
const int SHIFT = 500;
const int shift = 50;
int A[MaxN][MaxS][200];

int main()
{
    int i, j, k;

    FILE *fin = fopen("1-sir.in", "rt");
    fscanf(fin, "%d %d", &N, &S);
    fclose(fin);

    A[1][SHIFT][shift] = 1;

    for (i = 2; i <= N; i++)
    {
        //memset(A[lc], 0, sizeof(A[lc]));
        for (j = SHIFT-(i*(i+1))/2; j <= SHIFT+(i*(i+1))/2; j++)
	    for (k = -N+1; k < N; k++)
	    {
    	    int x = k + 1;
    	    A[i][j+x][shift+x] += A[i-1][j][shift+k];
    	    A[i][j+x][shift+x] %= 194767;
    	    x = k - 1;
    	    A[i][j+x][shift+x] += A[i-1][j][shift+k];
    	    A[i][j+x][shift+x] %= 194767;
	    }
	}

    int Val_fin = 0;
    for (i = -N; i <= N; i++)
	Val_fin += A[N][SHIFT+S][shift+i];

    FILE *fout = fopen("1-sir.out", "wt");
    fprintf(fout, "%d", Val_fin);
    fclose(fout);

    return 0;
}