Cod sursa(job #1552952)

Utilizator TimoteiCopaciu Timotei Timotei Data 18 decembrie 2015 23:17:52
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 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];
            dp[1][k]+= dp[0][k];
            dp[1][k + val]+= dp[0][k];

     }
     s += i * j;
       for(int k = -s +sMax; k <= s +sMax; 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;
}