Pagini recente » Cod sursa (job #2364074) | Cod sursa (job #1396120) | Cod sursa (job #2679741) | Cod sursa (job #835984) | Cod sursa (job #1550970)
#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[3][44105], sMax;
void adun()
{
dp[1][0] = dp[2][0];
for(int i = 1; i <= sMax; i++){
dp[1][i]+= dp[2][i];
dp[1][i]%= mod;
}
}
int main()
{
f >> N >> M >> X;
int P = N * M;
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;
}
dp[1][0] = 1;
for(int i = 1; i <= D; i++){
for(int j = sMax - v[i + D]; j >= 0; j--)
{
if(dp[1][j] != 0 ){
dp[1][j + v[i + D]] += dp[1][j];
dp[1][j + v[i + D]]%= mod;
}
}
for(int j = -v[i]; j <= sMax; j++)
{
if(dp[1][j] != 0 ){
dp[2][j + v[i]]+= dp[1][j];
dp[2][j + v[i]]%= mod;
}
}
}
adun();
X = abs(X);
if(X > sMax) g << 0;
else g << dp[1][X];
return 0;
}