Pagini recente » Cod sursa (job #3288139) | Cod sursa (job #1932283) | Cod sursa (job #912524) | Cod sursa (job #60494) | Cod sursa (job #1223343)
#include<fstream>
#include<iostream>
const int V = 44100;
const int MOD = 10000;
int A[88210], B[88210];
#define A (A + 44100)
#define B (B + 44100)
#define viz (viz + 44100)
using namespace std;
int main(){
ifstream cin("diamant.in");
ofstream cout("diamant.out");
int N,M,X,i,j,val,t,k2,x;
int *a=A, *b=B;
cin >> N >> M >> X;
if(X > V || X < - V)
{
cout << "0\n";
return 0;
}
b[0] = 1;
int line = 0, lim;
int mx,mx2;
for(i=1;i<=N;++i)
for(j=1;j<=M;++j)
{
val = i*j;
if(val > mx) mx = val;
++line;
lim = min(V,mx+val);
for(t=max(-V,-mx-val); t<=lim;++t)
{
if(t + val >= mx2) mx2 = t + val;
a[t] = b[t];
if(t + val <= V) a[t] = (a[t] + b[t+val]) % MOD;
if(t - val >= -V) a[t] = (a[t] + b[t-val]) % MOD;
}
mx = mx2;
swap(a,b);
}
cout << b[X] << '\n';
return 0;
}