Cod sursa(job #1691936)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 19 aprilie 2016 20:04:35
Problema Diamant Scor 100
Compilator cpp Status done
Runda atafedtsorp Marime 0.97 kb
#include <fstream>
#include <cstdio>
#define VALMX 100005
#define MOD 10000
#define INF 44100

using namespace std;

int N, M, X, i, j, cnt;
int ant[VALMX], dp[VALMX];
#define ant (ant+50000)
#define dp (dp+50000)

int main()
{
    freopen("diamant.in", "r", stdin);
    freopen("diamant.out", "w", stdout);
    scanf("%d %d %d", &N, &M, &X);
    ant[0]=1;
    for (i=1; i<=N; i++)
    {
        for (j=1; j<=M; j++)
        {
            for (cnt=-INF; cnt<=INF; cnt++)
            {
                if (ant[cnt]>0)
                {
                    dp[cnt]+=ant[cnt];
                    dp[cnt+i*j]+=ant[cnt];
                    dp[cnt-i*j]+=ant[cnt];
                }
            }
            for (cnt=-INF; cnt<=INF; cnt++)
            {
                ant[cnt]=dp[cnt] % MOD;
                dp[cnt]=0;
            }
        }
    }
    if (X<-INF || X>INF)
      printf("0\n");
    else
      printf("%d\n", ant[X]);
    return 0;
}