Cod sursa(job #3220445)

Utilizator Maftei_TudorMaftei Tudor Maftei_Tudor Data 3 aprilie 2024 18:00:51
Problema Diamant Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
const int MID = 1e5, mod = 1e4;

int n, m, x, k, sum, v[405], dp[2*MID+5];

int main()
{
    freopen("diamant.in", "r", stdin);
    freopen("diamant.out", "w", stdout);
    cin.tie(nullptr)->sync_with_stdio(0);

    cin >> n >> m >> x;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++) {
            v[++k] = i * j;
            sum += v[k];
        }

    dp[MID] = 1;
    for(int i=1; i<=k; i++) {
        vector<int> add(2*MID+5, 0);
        for(int j=MID+sum; j>=MID-sum; j--)
            add[j] = (add[j] + dp[j-v[i]]) % mod;
        for(int j=MID-sum; j<=MID+sum; j++)
            add[j] = (add[j] + dp[j+v[i]]) % mod;
        for(int j=MID-sum; j<=MID+sum; j++)
            dp[j] = (dp[j] + add[j]) % mod;
    }

    cout << dp[MID+x];
    return 0;
}