Pagini recente » Cod sursa (job #968833) | Cod sursa (job #1655084) | Cod sursa (job #1119003) | Cod sursa (job #4612) | Cod sursa (job #1144926)
#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)
{
memcpy(use[1-l],use[l],sizeof use[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];
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;
}
fout<<DP[l][sum+SMAX];
return 0;
}