Pagini recente » Cod sursa (job #819361) | Cod sursa (job #1928491) | Cod sursa (job #250762) | Cod sursa (job #864785) | Cod sursa (job #2301062)
#include<iostream>
#include<fstream>
#include<unordered_map>
#include<cmath>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
const int DN=1e5+5,M=1e4,lim=5e4;
int n,m,sum,dp[2][DN],f,pr,ur=1,poz,vec;
int main()
{
fin>>n>>m>>f;
if(abs(f)>lim)
{
fout<<0;
return 0;
}
dp[0][lim]=1;
for(int l=1;l<=n;l++)
for(int c=1;c<=m;c++)
{
sum+=l*c;
for(int i=-sum;i<=sum;i++)
dp[ur][i+lim]=dp[pr][i+lim];
for(int i=-sum;i<=sum;i++)
{
poz=i+lim;
vec=poz+l*c;
if(vec<DN)
{
dp[ur][vec]+=dp[pr][poz];
if(dp[ur][vec]>=M)
dp[ur][vec]-=M;
}
vec=poz-l*c;
if(vec>=0)
{
dp[ur][vec]+=dp[pr][poz];
if(dp[ur][vec]>=M)
dp[ur][vec]-=M;
}
}
pr=1-pr;
ur=1-ur;
}
fout<<dp[pr][f+lim];
}