paste bin

malic
C++
#include <cstdio>

#define MAXN 21
int bw[MAXN][MAXN][MAXN];
void init()
{
    int a,b,c;
    for(a=0;a<MAXN;a++)
    {
    for(b=0;b<MAXN;b++)
    {
    for(c=0;c<MAXN;c++)
    {
        if(a==0 || b==0 || c==0)
        {
            bw[a][b][c]=1;
        }
        else if(a<b && b<c)
        {
            bw[a][b][c] = bw[a][b][c-1] + bw[a][b-1][c-1] - bw[a][b-1][c];
        }
        else
        {
            bw[a][b][c] = bw[a-1][b][c] + bw[a-1][b-1][c] + bw[a-1][b][c-1] - bw[a-1][b-1][c-1];
        }
    }}}
}

int w(int a, int b, int c)
{
    if(a<=0 || b<=0 || c<=0)
    {
        return 1;
    }
    if(a>20 || b>20 || c>20)
    {
        return w(20,20,20);
    }
    return bw[a][b][c];
}

int main(void)
{
    init();
    int a,b,c;
    while (1)
    {
        scanf("%d%d%d",&a,&b,&c);
        if(a==-1 && b==-1 && c==-1)
        {
            break;
        }
        printf("w(%d, %d, %d) = %d\n",a,b,c,w(a,b,c));
    }
    return 0;
}

2020 C1QD

fork this code