Pagini recente » Cod sursa (job #815280) | Cod sursa (job #301331) | Cod sursa (job #1277255) | Istoria paginii utilizator/barosanul1 | Cod sursa (job #1144945)
#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;
int main()
{
fin>>n>>m>>sum;
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(!DP[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];
if(k-i*j>0)
DP[1-l][k-i*j]+=DP[l][k];
}
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;
}