Cod sursa(job #3315614)

Utilizator LucaMirsolea14Luca Mirsolea LucaMirsolea14 Data 15 octombrie 2025 12:31:58
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
//dif3 diamant  nrpuf abc acces text2

#include<fstream>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");

const int M = 10000;

int dp[2][90000], n, m, X, s, off;

int main(){

    int i, j, stare, k, ans =0 ;
    fin >> n >> m >> X;

    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            s += i*j;

    if( X > s || X < -s){
        fout << 0;
        return 0;
    }

    off = s;
    dp[0][off] = 1;
    stare = 1;

    for(i=1;i<=n;i++){

        for(j=1;j<=m;j++){

            for(k=-s;k<=s;k++){

                dp[stare][off + k] = dp[1-stare][off + k];

               // dp[stare][off + k] = (dp[stare][off + k] + dp[1-stare][off + k]) % M;

                if(k-i*j >= -s)
                    dp[stare][off + k] = (dp[stare][off + k] + dp[1-stare][off + k-i*j]) % M;
                 if(k+i*j <= s)
                    dp[stare][off + k] = (dp[stare][off + k] + dp[1-stare][off + k+i*j]) % M;


                if(k == X)
                    ans = (ans + dp[stare][off + k]) % M;
            }

            stare = 1 - stare;

            for(k=-s;k<=s;k++)
                dp[stare][off + k] = 0;



        }

    }

   fout << dp[1-stare][off + X];

}