Cod sursa(job #1552942)

Utilizator TimoteiCopaciu Timotei Timotei Data 18 decembrie 2015 23:00:32
Problema Diamant Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
#include<iostream>
#include <cmath>
#define mod 10000
using namespace std;

ifstream f("diamant.in");
ofstream g("diamant.out");

int N, M ,X, dp[2][88210], val, s, sMax;
int main()
{
    f >> N >> M >> X;
     sMax = ((N *(N + 1))/2) * ((M *(M + 1))/2);

     dp[0][sMax] = 1;

        for(int i = 1; i <= N; i++)
            for(int j = 1; j <= M ;j++) {
            val = i * j;
        for(int k = -s + sMax; k <= s + sMax; k++)
     {
            dp[1][k - val] = dp[0][k] % mod;
            dp[1][k + val] = dp[0][k] % mod;

     }
     s += i * j;
       for(int k = -s +sMax; k <= s +sMax; k++){
        dp[0][k] = (dp[0][k] + dp[1][k]) % mod;
        dp[1][k] = 0;
       }

        }
    if(abs(X) > sMax) g << 0;
    else g << dp[0][X + sMax];


  return 0;
}