Cod sursa(job #3237255)

Utilizator Anul2024Anul2024 Anul2024 Data 7 iulie 2024 16:07:12
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <algorithm>
#define mod 10000
using namespace std;
ifstream fin ("diamant.in");
ofstream fout ("diamant.out");
int n,m,s,i,j,k,maxim,minim,v[401],dpp[2][88201],*dp[2];
int main ()
{
    dp[0]=dpp[0]+44100;
    dp[1]=dpp[1]+44100;
    fin>>n>>m>>s;
    if (!(s>=-44100&&s<=44100))
    {
        fout<<0;
        return 0;
    }
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
            v[++k]=i*j;
    }
    sort (v+1,v+k+1);
    dp[0][0]=1;
    minim=maxim=0;
    for (i=1; i<=k; i++)
    {
        for (j=minim; j<=maxim; j++)
            dp[i%2][j]=0;
        for (j=minim; j<=maxim; j++)
        {
            dp[i%2][j-v[i]]+=dp[(i+1)%2][j];
            dp[i%2][j+v[i]]+=dp[(i+1)%2][j];
            dp[i%2][j]+=dp[(i+1)%2][j];
            dp[i%2][j-v[i]]%=mod;
            dp[i%2][j+v[i]]%=mod;
            dp[i%2][j]%=mod;
        }
        minim-=v[i];
        maxim+=v[i];
    }
    fout<<dp[k%2][s];
    return 0;
}