Pagini recente » Cod sursa (job #1600805) | Cod sursa (job #210781) | Cod sursa (job #2518508) | Cod sursa (job #1613825) | Cod sursa (job #3263980)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("diamant.in");
ofstream g ("diamant.out");
const int NMAX = 405;
const int VMAX = 45e3;
const int MOD = 1e4;
int dp[2][2 * VMAX + 2];
int main()
{
int n, m, x;
f >> n >> m >> x;
if(x > VMAX or x < -VMAX){
g << 0;
return 0;
}
dp[0][VMAX] = 1;
int cnt = 0;
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
cnt ++;
for(int k=-VMAX; k<=VMAX; k++)
dp[cnt % 2][k + VMAX] = 0;
for(int k=-VMAX; k<=VMAX; k++){
if(k - i * j + VMAX >= 0)
dp[cnt % 2][k + VMAX] = (dp[cnt % 2][k + VMAX] + dp[(cnt + 1) % 2][k + VMAX - i * j]) % MOD;
if(k + i * j <= VMAX)
dp[cnt % 2][k + VMAX] = (dp[cnt % 2][k + VMAX] + dp[(cnt + 1) % 2][k + VMAX + i * j]) % MOD;
dp[cnt % 2][k + VMAX] = (dp[cnt % 2][k + VMAX] + dp[(cnt + 1) % 2][k + VMAX]) % MOD;
// if(dp[cnt % 2][k + VMAX])
// cout << dp[cnt % 2][k + VMAX] << ' ' << cnt << ' ' << k + VMAX << ' ' << endl;
}
}
}
g << dp[(n * m) % 2][x + VMAX] % MOD;
return 0;
}