Cod sursa(job #1185380)

Utilizator jul123Iulia Duta jul123 Data 15 mai 2014 16:50:24
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<iostream>
#include<cstdio>
#include<cmath>
#define MOD 10000
#define NMAX 100000
using namespace std;

int dc[NMAX], da[NMAX];
int main()
{
    FILE *fin, *fout;
    fin=fopen("diamant.in", "r");
    fout=fopen("diamant.out", "w");

    int C_MAX, n, m, i, x, j, aux1, aux2;
    fscanf(fin, "%d %d %d", &m, &n, &x);
    C_MAX = n*(n+1)/2*m*(m+1)/2;
    for(j=0; j<=C_MAX; j++)
        dc[0]=1,
        da[0]=1;
    for(i=1; i<=m*n; i++) {
        aux1 = (i-1)/n+1;
        aux2 = i%n;
        if(aux2==0)
            aux2=n;
        for(j=0; j<=C_MAX; j++) {
           dc[j] = da[j+aux1*aux2] + da[j];
           if(j < aux1*aux2)
            dc[j] += da[aux1*aux2-j];
           else
            dc[j] +=da[j-aux1*aux2];
        }
        for(j=0; j<=C_MAX; j++)
            da[j]=dc[j];
    }
    fprintf(fout, "%d", dc[x]%MOD);
}