Cod sursa(job #3287507)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 18 martie 2025 14:23:39
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
#define mod 10000
using namespace std;
int n,m,x,s,c,sn;
short int dp[2][88205];
int main()
{
    ifstream f ("diamant.in");
    ofstream g ("diamant.out");
    f>>n>>m>>x;
    for (int i=1; i<=n; i++)
        for (int j=1; j<=m; j++)
            s+=i*j;
    if ((x>0 && x>s) || (x<0 && x<-s))
    {
        g<<0;
        return 0;
    }
    dp[0][s]=1;
    for (int i=1; i<=n; i++)
        for (int j=1; j<=m; j++)
        {
            c++;
            sn+=i*j;
            for (int sum=0; sum<=2*s; sum++)
                dp[c%2][sum]=dp[1-c%2][sum];
            for (int sum=s-sn; sum<=s+sn; sum++)
            {
                if (sum+i*j<=2*s) dp[c%2][sum]=(dp[c%2][sum]+dp[1-c%2][sum+i*j])%mod;
                if (sum-i*j>=0) dp[c%2][sum]=(dp[c%2][sum]+dp[1-c%2][sum-i*j])%mod;
            }
        }
    g<<dp[c%2][s+x];
}