Cod sursa(job #2967331)

Utilizator MerlinTheWizardMelvin Abibula MerlinTheWizard Data 19 ianuarie 2023 13:44:46
Problema Diamant Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream f("diamant.in");
ofstream g("diamant.out");

short int dp[405][88205];
short int n,m,x;

void citire()
{
 	f>>n>>m>>x;
}

void solve()
{
   	short int summax = 0,sum = 0,ma,mi;
   	for(int i=1;i<=n;i++)
      	for(int j=1;j<=m;j++)
        	summax = summax + i * j;
	short int casute = 0;
	dp[0][44100] = 1;
	for(short int i=1;i<=n;i++)
   	{
   		for(short int j=1;j<=m;j++)
       {
			sum = i * j;   
          	summax = summax - sum;
        	ma = max(-44100 + summax,x-summax);
			mi = min(44100 - summax, x + summax);
			casute++;
			for(short int k = ma; k<= mi;k++)
			{
				dp[casute][k + 44100] = dp[casute-1][k + 44100];
				dp[casute][k + 44100] += dp[casute-1][k - sum + 44100];
				dp[casute][k + 44100] += dp[casute-1][k + sum + 44100];
				dp[casute][k + 44100] = dp[casute][k + 44100] % 10000;
			}  
       }
   	}
   	g<<dp[n*m][44100 + x];
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
   	citire();
   	solve();
}