Cod sursa(job #2763556)

Utilizator DragosC1Dragos DragosC1 Data 14 iulie 2021 22:08:11
Problema Diamant Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;
 
int n, m, x;
int dp[2][88201];
int sum;

void read() {
    ifstream f("diamant.in");
    f >> n >> m >> x;
    f.close();
}
 
void solve() {
    int i, j, k;
 
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++) 
            sum += i * j;

    x = (x > 0 ? x : -x);

    if (x > sum)
        return;
 
    dp[1][sum] = 1;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++) {
            for (k = 0; k <= 2 * sum; k++)
                dp[0][k] = dp[1][k];
            for (k = 0; k <= 2 * sum; k++) {
                if (k >= i * j)
                    dp[1][k] += dp[0][k - i * j];
                if (k <= 2 * sum - i * j)
                    dp[1][k] += dp[0][k + i * j];   
                dp[1][k] %= 10000;
            }
        }
}
 
void output() {
    ofstream g("diamant.out");
    g << (x > sum ? 0 : dp[1][sum + x]);
    g.close();
}
 
int main() {
    read();
    solve();
    output();
    return 0;
}