Cod sursa(job #2664044)

Utilizator pregoliStana Andrei pregoli Data 27 octombrie 2020 20:20:18
Problema Diamant Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
#define STOP fout.close(); exit(EXIT_SUCCESS);
ifstream fin("diamant.in");
ofstream fout("diamant.out");
///***********************
const int XMAX = 45'000, MOD = 1e4;
int n, m, x, dp[403][XMAX * 2 + 3], a[403], k, sum;

int main() {
    fin >> n >> m >> x;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++) {
            a[++k] = i * j;
            sum += a[k];
        }
    if (sum < abs(x)) {
        fout << 0 << endl;
        STOP
    }
    dp[0][XMAX] = 1;
    x += XMAX;
    sum += XMAX;
    for (int i = 1; i <= k; i++)
        for (int j = 0; j <= sum; j++) {
            dp[i][j] = dp[i - 1][j];
            if (a[i] <= j)
                dp[i][j] += dp[i - 1][j - a[i]];
            dp[i][j] += dp[i - 1][j + a[i]];
            dp[i][j] %= MOD;
        }
    fout << dp[k][x] << endl;
    STOP
}