Pagini recente » Cod sursa (job #2594504) | Cod sursa (job #2563910) | Cod sursa (job #796096) | Cod sursa (job #1604333) | Cod sursa (job #2461270)
#include <bits/stdc++.h>
using namespace std;
FILE *fin=fopen("diamant.in", "r");
FILE *fout=fopen("diamant.out", "w");
const int MOD = 10000;
const int VMAX = 45104;
int n,m,x;
int dp[2][VMAX*2+10];
bool used[VMAX*2+10];
vector <int> v;
int main(){
int i,j,q,it,sz;
bool lin=0;
fscanf(fin, "%d%d%d", &n,&m,&x);
v.push_back(0);
if(abs(x)>VMAX){
fprintf(fout, "0");
return 0;
}
used[VMAX]=1;
dp[!lin][VMAX]=1;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j){
sz=v.size();//elementele care erau deja in dp
memset(dp[lin], 0, sizeof dp[lin]);
for(q=0;q<sz;++q){
it=v[q] + VMAX;
if(!used[it+i*j]){
used[it+i*j]=1;
v.push_back(v[q]+i*j);
}
if(!used[it-i*j]){
used[it-i*j]=1;
v.push_back(v[q]-i*j);
}
dp[lin][it]=(dp[lin][it] + dp[!lin][it]) % MOD;
dp[lin][it+i*j]=(dp[lin][it+i*j] + dp[!lin][it]) % MOD;
dp[lin][it-i*j]=(dp[lin][it-i*j] + dp[!lin][it]) % MOD;
}
lin=!lin;
}
fprintf(fout, "%d", dp[!lin][x+VMAX]);
return 0;
}