Cod sursa(job #2098236)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 2 ianuarie 2018 16:25:01
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
using namespace std;
fstream f1("diamant.in", ios::in);
fstream f2("diamant.out", ios::out);
int n, m, x, dp[2][88205];
int fct(int x)
{
    if(x>0) return x;
    else return -x;
}
int main()
{
    int poz, i, j, val;
    f1>>n>>m>>x;
    if(fct(x)> (n*(n+1)/2)*(m*(m+1)/2)) f2<<0;
    else
    {
        dp[0][44100]=1;
        poz=1;
        for(i=1; i<=n; i++)
            for(j=1; j<=m; j++)
        {
            for(val=0; val<=88200; val++)
            {
                dp[poz][val]= (dp[poz][val]+dp[1-poz][val])%10000;

                if(val-i*j >=0)  dp[poz][val-i*j]=(dp[1-poz][val]+ dp[poz][val-i*j])%10000;

                if(val+i*j <=88200)  dp[poz][val+i*j]= (dp[1-poz][val]+ dp[poz][val+i*j])%10000;
                dp[1-poz][val]=0;
            }
            poz=1-poz;
        }
        f2<<dp[1-poz][44100+x];
    }
    return 0;
}