Pagini recente » Cod sursa (job #1091002) | Cod sursa (job #1075119) | Cod sursa (job #2908593) | Cod sursa (job #631582) | Cod sursa (job #2529758)
#include <iostream>
#include <fstream>
#include <cstring>
#include <unordered_map>
#define VAL 44100
#define MOD 10000
using namespace std;
int sum, m, n, x, dp[2*VAL+10], dp1[2*VAL+10], dp2[2*VAL+10];
int adun(int a, int b)
{ if(a + b < 0) return a + b + VAL;
return a + b;
}
int scad(int a, int b)
{ if(a - b < 0) return a - b + VAL;
return a - b;
}
void rucsac(int val)
{ for(int i=sum; i>=-sum; i--) dp1[adun(i,0)] = dp[scad(i,val)];
for(int i=-sum; i<=sum; i++) dp[adun(i,0)] = (dp[adun(i,0)] + dp1[adun(i,0)] + dp[adun(i,val)]) % 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;
}