Cod sursa(job #2727860)
Utilizator | Data | 22 martie 2021 16:08:49 | |
---|---|---|---|
Problema | Diamant | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | oni_dinamica | Marime | 0.99 kb |
#include <bits/stdc++.h>
#define NMAX 1000
using namespace std;
ifstream f("diamant.in");
ofstream g("diamant.out");
const int mod=10000;
int n,m,x,sum=0,dp[900005][2];
int main()
{
f>>n>>m>>x;
x=abs(x);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
sum+=i*j;
}
}
if(x>sum)
{
g<<0;
return 0;
}
dp[sum][1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
for(int d=0;d<=2*sum;d++)
{
dp[d][0]=dp[d][1];
}
for(int d=0;d<=2*sum;d++)
{
dp[d][1]=dp[d][0];
if(i*j+d<=2*sum)
{
dp[d][1]+=dp[d+i*j][0];
}
if(d-i*j>=0)
{
dp[d][1]+=dp[d-i*j][0];
}
dp[d][1]%=mod;
}
}
}
g<<dp[x+sum][1];
}