Cod sursa(job #1189783)

Utilizator jul123Iulia Duta jul123 Data 23 mai 2014 16:05:00
Problema Diamant Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 0.88 kb
#include<iostream>
#include<cstdio>
#include<cmath>
#define MOD 10000
#define NMAX 1000000
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, k;
    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<=n; i++)
        for(k=1; k<=m; k++) {
        for(j=0; j<=C_MAX; j++) {
           dc[j] = da[j+i*k] + da[j];
           if(j < i*k)
            dc[j] += da[i*k-j];
           else
            dc[j] +=da[j-i*k];
        dc[j]=dc[j]%MOD;
        }
        for(j=0; j<=C_MAX; j++)
            da[j]=dc[j];
    }
    if(x<0)
        x=-x;
        if(x<=C_MAX)
    fprintf(fout, "%d", dc[x]);
    else
        fprintf(fout, "0");

}