Cod sursa(job #2458859)

Utilizator Senth30Denis-Florin Cringanu Senth30 Data 21 septembrie 2019 17:36:07
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;
const int NMAX = 45000;
const int MOD = 10000;

int N, M, X, sMax;
int dp[2][2 * NMAX];

int main(){

    freopen("diamant.in", "r", stdin);
    freopen("diamant.out", "w", stdout);

    scanf("%d %d %d", &N, &M, &X);

    for(int i = 1; i <= N; i++){
        for(int j = 1; j <= M; j++)
            sMax += i * j;
    }
    X = abs(X);
    if(sMax < X){
        printf("0");
        return 0;
    }

    dp[1][0] = 1;
    int line = 0;
    for(int i = 1; i <= N; i++){
        for(int j = 1; j <= M; j++){
            for(int k = 0; k <= sMax; k++)
                dp[line][k] = (dp[1 - line][abs(i * j - k)] + dp[1 - line][k] + dp[1 - line][i * j + k]) % MOD;
            line = 1 - line;
        }
    }
    printf("%d", dp[1 - line][X]);

    return 0;
}