Pagini recente » Cod sursa (job #3173344) | Cod sursa (job #351373) | Cod sursa (job #889949) | Cod sursa (job #2219331) | Cod sursa (job #1144940)
#include<fstream>
#include<cstring>
#define NMAX 25
#define SMAX 44105
#define MOD 10000
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int n,m,sum,DP[2][2*SMAX],l,saux;
bool use[2][2*SMAX];
int main()
{
fin>>n>>m>>sum;
use[0][SMAX-1]=use[0][SMAX]=use[0][SMAX+1]=1;
DP[0][SMAX]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++,l=1-l)
{
memset(DP[1-l],0,sizeof DP[1-l]);
for(int k=0;k<2*SMAX;k++)
{
if(!use[l][k])
continue;
DP[1-l][k]+=DP[l][k];
use[1-l][k]=1;
if(k+i*j<2*SMAX)
{
DP[1-l][k+i*j]+=DP[l][k];
use[1-l][k+i*j]=1;
}
if(k-i*j>0)
{
DP[1-l][k-i*j]+=DP[l][k];
use[1-l][k-i*j]=1;
}
}
for(int k=0;k<2*SMAX;k++)
DP[1-l][k]%=MOD;
}
if( sum < (-(m*(m+1)*n*(n+1))/4) || sum > ((m*(m+1)*n*(n+1))/4) )
fout<<"0";
else
fout<<DP[l][sum+SMAX];
return 0;
}