Pagini recente » Cod sursa (job #3205391) | Cod sursa (job #1089610) | Cod sursa (job #1039973) | Cod sursa (job #2242494) | Cod sursa (job #2314243)
#include <fstream>
#include <cstring>
#define DN 21
#define ADD 44100
#define MOD 10000
using namespace std;
ifstream fi("diamant.in");
ofstream fo("diamant.out");
int n,m,x;
short int dp[2][90000];
int lim;
inline void add(short int &a,short int b)
{
a+=b;
if(a>=MOD)
a-=MOD;
}
int main()
{
fi>>n>>m>>x;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
lim+=i*j;
dp[0][ADD]=1;
for(int i=1,ind=1;i<=n*m;i++,ind^=1)
{
int l=i/m+1,c=i%m;
if(c==0)
l--,c=m;
memset(dp[ind],0,sizeof(dp[ind]));
for(int sum=(-lim);sum<=lim;sum++)
{
if(sum-l*c>=(-lim))
add(dp[ind][sum+ADD],dp[ind^1][sum-l*c+ADD]);
if(sum+l*c<=lim)
add(dp[ind][sum+ADD],dp[ind^1][sum+l*c+ADD]);
add(dp[ind][sum+ADD],dp[ind^1][sum+ADD]);
}
}
if(x>lim||x<(-lim))
fo<<0;
else
fo<<dp[(n*m)%2][x+ADD];
fi.close();
fo.close();
return 0;
}