Pagini recente » Cod sursa (job #1153085) | Cod sursa (job #2197828) | Cod sursa (job #3280890) | Cod sursa (job #2371071) | Cod sursa (job #2529743)
#include <iostream>
#include <fstream>
#include <cstring>
#include <unordered_map>
#define VAL 44100
#define MOD 10000
using namespace std;
int sum, m, n, x;
unordered_map <int, int> dp, dp1, dp2;
void rucsac(int val)
{ dp1.clear();
dp2.clear();
for(int i=sum; i>=-sum; i--) dp1[i] = dp[i-val];
for(int i=-sum; i<=sum; i++) dp2[i] = dp[i+val];
for(int i=-sum; i<=sum; i++) dp[i] = (dp[i] + dp1[i] + dp2[i]) % MOD;
}
int main()
{
ifstream cin("diamant.in");
ofstream cout("diamant.out");
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m >> x;
if(x < 0) x = -x;
if(x > VAL)
{ cout << 0 << '\n';
return 0;
}
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++) sum = sum + i * j;
dp[0] = 1;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
rucsac(i*j);
cout << dp[x] << '\n';
return 0;
}