Cod sursa(job #2224173)

Utilizator georgitTreista Georgiana georgit Data 23 iulie 2018 12:52:56
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <cstdlib>
#define M 10000
#define N 44200

using namespace std;

int s[405],dp[3][90000];
int main()
{
    ifstream f("diamant.in");
    ofstream g("diamant.out");
    int n,m,sum=0,k=0;
    long long x;
    f>>n>>m>>x;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            s[++k]=i*j;
            sum+=i*j;
        }
    if(abs(x)>sum)
    {
        g<<0;
        return 0;
    }
    x+=N;
    dp[0][N]=1;
    for(int i=1;i<=k;i++)
        for(int j=1;j<=2*N;j++)
        {
            dp[i%2][j]=dp[1-i%2][j];
            dp[i%2][j]+=dp[1-i%2][j+s[i]];
            if(j>=s[i])
                dp[i%2][j]+=dp[1-i%2][j-s[i]];
            dp[i%2][j]%=M;
        }
    g<<dp[k%2][x];
    return 0;
}