Cod sursa(job #2967324)

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

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

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

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

void solve()
{
   	int summax = 0,sum = 0;
   	for(int i=1;i<=n;i++)
      	for(int j=1;j<=m;j++)
        	summax = summax + i * j;
	int casute = 0;
	dp[0][44100] = 1;
	for(int i=1;i<=n;i++)
   	{
   		for(int j=1;j<=m;j++)
       {
			sum = i * j;   
          	summax = summax - sum;
        	int ma = max(-44100 + summax,x-summax);
			int mi = min(44100 - summax, x + summax);
			casute++;
			for(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()
{
   	citire();
   	solve();
}