subtask#1两个RE了 AC必关
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[25][25][25]={0};
long long b[100050][3]={0};
int n1,n2,n3,j;
for(int i=0;i<=20;i++){
for(int j=0;j<=20;j++){
for(int k=0;k<=20;k++){
if(i==0||j==0||k==0)
a[i][j][k]=1;
else if(i<j&&j<k)
a[i][j][k]=a[i][j][k-1]+a[i][j-1][k-1]-a[i][j-1][k];
else
a[i][j][k]=a[i-1][j][k]+a[i-1][j-1][k]+a[i-1][j][k-1]-a[i-1][j-1][k-1];
}
}
} //记忆化把a[0][0][0]到a[20][20][20]都存进这个三维数组
for(j=0;;j++){
cin>>n1>>n2>>n3;
if(n1==-1&&n2==-1&&n3==-1)
break;
b[j][0]=n1;
b[j][1]=n2;
b[j][2]=n3;
} //用二维数组b存要求的数
for(int i=0;i<j;i++){
if(b[i][0]<0||b[i][1]<0||b[i][2]<0)
cout<<"w("<<b[i][0]<<", "<<b[i][1]<<", "<<b[i][2]<<") = "<<1<<endl;
else if(b[i][0]>20||b[i][1]>20||b[i][2]>20)
cout<<"w("<<b[i][0]<<", "<<b[i][1]<<", "<<b[i][2]<<") = "<<a[20][20][20]<<endl;
else
cout<<"w("<<b[i][0]<<", "<<b[i][1]<<", "<<b[i][2]<<") = "<<a[b[i][0]][b[i][1]][b[i][2]]<<endl;
} /*若有某个数小于0输出1,若有某个数大于20输出a[20][20][20]
否则直接输出该组数据b[i][0]、b[i][1]、b[i][2]在a中对应的值*/
return 0;
}