Cod sursa(job #2564335)

Utilizator DooMeDCristian Alexutan DooMeD Data 1 martie 2020 20:17:24
Problema Diamant Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

const int valmax=44100;
const int modulo=10000;

ifstream f ("diamant.in");
ofstream g ("diamant.out");
long long n,m,x,dp[2][2*valmax+10],i,j,k,acm=1,vch=0;
int main()
{
    f >> n >> m >> x;
    x+=valmax;
    if(x>2*valmax) {
        g << 0;
        return 0;
    }
    dp[0][valmax]=1;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++) {
            for(k=0; k<=2*valmax; k++) {
                dp[acm][k]=0;
                if(k-i*j>0) dp[acm][k]=(dp[acm][k]+dp[vch][k-i*j])%modulo;
                if(k+i*j<=2*valmax) dp[acm][k]=(dp[acm][k]+dp[vch][k+i*j])%modulo;
                dp[acm][k]=(dp[acm][k]+dp[vch][k])%modulo;
            }
            swap(acm,vch);
        }
    g << dp[vch][x];
    return 0;
}