Pagini recente » Cod sursa (job #2501438) | Cod sursa (job #1546738) | Cod sursa (job #491271) | Cod sursa (job #847843) | Cod sursa (job #1550895)
#include<fstream>
#include <cmath>
#define mod 10000
using namespace std;
ifstream f("diamant.in");
ofstream g("diamant.out");
int N, M ,X, D, v[805], dp[405][44105], s;
int main()
{
f >> N >> M >> X;
int P = N * M;
int sMax = 0;
for(int i = N; i>= 1; i--)
for(int j = M; j >= 1; j--)
{
v[(i - 1) * M + j + P] = i * j;
D++;
v[D] = -( i * j);
sMax+= i * j;
}
D*=2;
dp[0][0] = 1;
for(int i = 1; i <= D/2; i++)
for(int j = sMax - v[i + D/2]; j >= 0; j--)
{
dp[i][j] = dp[i - 1][j];
if(dp[i][j] != 0 ){
dp[i][j + v[i + D/2]] += dp[i][j];
dp[i][j + v[i + D/2]]%= mod;
}
}
for(int i = 1; i <= D/2; i++){
for(int j = -v[i]; j <= sMax; j++)
{
if(dp[i][j] != 0 ){
dp[i][j + v[i]] += dp[i][j];
dp[i][j + v[i]]%= mod;
}
}
s+= dp[i][0];
s%= mod;
}
if(s == 0)s = 9999;
else dp[D/2][0] = s - 1;
X = abs(X);
if(X > sMax) g << 0;
else g << dp[D/2][X];
return 0;
}