Cod sursa(job #2664055)

Utilizator pregoliStana Andrei pregoli Data 27 octombrie 2020 20:29:33
Problema Diamant Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 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 = 44'100, MOD = 1e4;
int n, m, x, dp[2][XMAX * 2 + 3], a[403], k, sum, line;

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[line][XMAX] = 1;
    x += XMAX;
    sum += XMAX;
    for (int i = 1; i <= k; i++, line ^= 1)
        for (int j = 0; j <= sum; j++) {
            dp[!line][j] = dp[line][j];
            if (a[i] <= j)
                dp[!line][j] += dp[line][j - a[i]];
            dp[!line][j] += dp[line][j + a[i]];
            dp[!line][j] %= MOD;
        }
    fout << dp[line][x] << endl;
    STOP
}