Cod sursa(job #2834327)

Utilizator Maniu_DianaManiu Maria Diana Maniu_Diana Data 16 ianuarie 2022 20:43:43
Problema Diamant Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

const int mod = 10000, V = 90000;

ifstream fin("diamant.in");
ofstream fout("diamant.out");

int n, m, x, a[405], len, dp[2][95000];


int main()
{
    fin >> n >> m >> x;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            a[++len] = i * j;
    x += 45000; //offset
    dp[0][V/2] = 1; //primul element
    int L = 0;
    for(int i = 1; i <= len; i ++)
    {
        L = 1 - L;
        for(int j = 0; j <= V; j ++)
        {
            dp[L][j] = dp[1 - L][j]; //nu e L - 1, ca merg pe negative :-)
            if(j >= a[i])
                dp[L][j] += dp[1 - L][j - a[i]];
            dp[L][j] += dp[1 - L][j + a[i]];
            dp[L][j] %= mod;
        }
    }
    fout << dp[L][x] << '\n';
    return 0;
}