Cod sursa(job #2727869)
| Utilizator | Data | 22 martie 2021 16:13:40 | |
|---|---|---|---|
| Problema | Diamant | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.97 kb |
#include <bits/stdc++.h>
#define NMAX 1000
using namespace std;
ifstream f("diamant.in");
ofstream g("diamant.out");
const short mod=10000;
int x,sum=0;
short dp[90005][2],n,m;
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++)
{
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];
}
