Cod sursa(job #1463360)

Utilizator cojocarugabiReality cojocarugabi Data 20 iulie 2015 19:28:49
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
# include <bits/stdc++.h>
const int pls = 185005;
using namespace std;
ifstream fi("diamant.in");
ofstream fo("diamant.out");
int dp[2][pls];
int main(void)
{
    int n,m,x;
    fi>>n>>m>>x;
    dp[0][0] = 1;
    bool ok = 0;
    x = abs(x);
    if (x >= pls) return fo << "0\n",0;
    int sum = 0;
    for (int i = 1;i <= n;++i)
        for (int j = 1;j <= m;++j)
        {
            ok = 1 - ok;
            int add = i*j;
            sum += i*j;
            for (int k = 0;k <= sum;++k) dp[ok][k] = dp[1-ok][k];
            for (int k = 0;k <= sum;++k)
            {
                dp[ok][k] += dp[1-ok][abs(k - add)];
                if (dp[ok][k] >= 10000) dp[ok][k] -= 10000;
                dp[ok][k] += dp[1-ok][k + add];
                if (dp[ok][k] >= 10000) dp[ok][k] -= 10000;
            }
        }
    return fo << dp[ok][x] << '\n',0;
}