送分大水题(高维前缀和)(高维差分)

送分大水题

题目大意

给你 n 个 m 维向量。
然后每次询问给出一个 m 维向量,问你有多少对向量满足条件。
条件有四种:每一维最大值都大于等于或小于等于一个值,每一维最小值都小于等于或大于等于一个值。

思路

首先看到这种鬼题我们发现其实可以用高维的一些数据结构啊,什么的。
但由于有 \(10\) 维,这个码量就变得十分的恐怖。
(当然可能有什么简单的写法,但是我不会)
第一第二个询问其实就分别跑一个高维前缀和高维后缀就可以了。
就是处理出有多少个数满足大于某个向量或小于。
那第一第二你其实把大于的两两组合,小于的两两组合,就分别是两问的答案了。

接着我们来看第三第四个询问。
我们考虑延续求第一第二问的思路。
发现这个 \(\max\) 和这个 \(\min\) 不太好搞,那我们考虑从第一问推到第三问,从第二问推到第四问。
首先我们求出的是 \(\max(Ai,Bi)<=Ci\) 的,那我们考虑要怎么得到 \(\max(Ai,Bi)>=Ci\) 的。
(由于它是要每一项都满足,所以你不能是一个满足比它大,另一个随便选,它的 \(\max\) 可能是由两个数分别贡献才比 \(Ci\) 大或等于的)
(我比赛的时候就是因为这样就锅了)
那我们可以考虑先求出 \(\max(Ai,Bi)=Ci\),通过跑后缀和得到 \(\max(Ai,Bi)>=Ci\)

那怎么得到呢?不难想到用差分,那就是高维差分。
然后第二个求第四个也是同样道理。

然后讲一讲高维的前缀和差分要怎么搞。
具体可以看看代码,你其实就可以想一维的,再想二维的,然后你就可以推广出来了。
然后记得差分不要用容斥的那个,你十维搞容斥会烦死,你就用类似求前缀和的方式减。
然后你注意一下差分枚举的顺序就可以了。
具体差分的实现可以看看我的代码。

然后自己看看数据就知道要快读快输。
(我这种**就不知道)

然后,由于我没有将求前缀啊,求后缀啊这些打包,所以。。。
你懂的,八百多行的代码。
所以——

$$全!!!$$

$$体!!!$$

$$起!!!$$

$$立!!!$$

代码

#pragma GCC optimize(2)

#include<cstdio>
#define ll long long

using namespace std;

int n, m, a[11], q, op, re, now;
int num[4][4][4][4][4][4][4][4][4][4];
int val[4][4][4][4][4][4][4][4][4][4];
ll ans1[4][4][4][4][4][4][4][4][4][4];
ll ans2[4][4][4][4][4][4][4][4][4][4];
ll ans3[4][4][4][4][4][4][4][4][4][4];
ll ans4[4][4][4][4][4][4][4][4][4][4];
ll ans; 
char c;

char buf[1<<23], *p1=buf, *p2=buf, obuf[1<<23], *O=obuf;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1<<21, stdin), p1 == p2) ? EOF : *p1++)

int read() {
	re = 0; c = getchar();
	while (c < '0' || c > '9') c = getchar();
	while (c >= '0' && c <= '9') {
		re = (re << 3) + (re << 1) + c - '0';
		c = getchar();
	}
	return re;
}

int read1() {
	c = getchar();
	while (c < '0' || c > '9') c = getchar();
	return c - '0';
}

ll write(ll x) {
	if (x > 9ll) write(x / 10ll);
	putchar(x % 10 + '0');
}

int main() {
	freopen("water.in", "r", stdin);
	freopen("water.out", "w", stdout);
	
	n = read(); m = read();
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= m; j++) {
			a[j] = read1() - 1;
		}
		num[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]]++;
		val[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]]++;
	}
	
	
	//算出第一个第二个答案(直接前缀后缀)
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 1; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10 + 1];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 1; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9 + 1][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 1; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8 + 1][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 1; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7 + 1][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 1; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6 + 1][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 1; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5 + 1][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 1; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4 + 1][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 1; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3 + 1][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 1; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2 + 1][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	for (int a1 = 1; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1 + 1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
	}
	
	
	 //这一部分杠掉的是求后缀,但是我当时卡时间把就把它放到前面求前缀一起了
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3 - 1; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3 - 1; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3 - 1; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3 - 1; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3 - 1; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3 - 1; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3 - 1; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3 - 1; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3; a1 >= 0; --a1)
//	for (int a2 = 3 - 1; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
//	
//	for (int a1 = 3 - 1; a1 >= 0; --a1)
//	for (int a2 = 3; a2 >= 0; --a2)
//	for (int a3 = 3; a3 >= 0; --a3)
//	for (int a4 = 3; a4 >= 0; --a4)
//	for (int a5 = 3; a5 >= 0; --a5)
//	for (int a6 = 3; a6 >= 0; --a6)
//	for (int a7 = 3; a7 >= 0; --a7)
//	for (int a8 = 3; a8 >= 0; --a8)
//	for (int a9 = 3; a9 >= 0; --a9)
//	for (int a10 = 3; a10 >= 0; --a10)
//		val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	//先记录答案,准备搞第三第四个答案
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10) {
		now = num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		ans1[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = 1ll * now * (now - 1) >> 1;
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = ans1[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		now = val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
		ans2[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = 1ll * now * (now - 1) >> 1;
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = ans2[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	}
	
	
	//搞第三个答案:搞出第一个答案的差分数组 得到 max(Ai,Bi)=Ci 的个数
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 1; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 1; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 1; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 1; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 1; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 1; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 1; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 1; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 1; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 1; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	//跑后缀得到第三个的答案 max(Ai,Bi)>=Ci 的个数
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3 - 1; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3 - 1; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3 - 1; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3 - 1; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3 - 1; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3 - 1; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3 - 1; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3 - 1; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3; a1 >= 0; --a1)
	for (int a2 = 3 - 1; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 3 - 1; a1 >= 0; --a1)
	for (int a2 = 3; a2 >= 0; --a2)
	for (int a3 = 3; a3 >= 0; --a3)
	for (int a4 = 3; a4 >= 0; --a4)
	for (int a5 = 3; a5 >= 0; --a5)
	for (int a6 = 3; a6 >= 0; --a6)
	for (int a7 = 3; a7 >= 0; --a7)
	for (int a8 = 3; a8 >= 0; --a8)
	for (int a9 = 3; a9 >= 0; --a9)
	for (int a10 = 3; a10 >= 0; --a10)
		ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	//求第四个跟求第三个同一个道理
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4 - 1; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4 - 1; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4 - 1; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4 - 1; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4 - 1; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4 - 1; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4 - 1; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4 - 1; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4 - 1; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4 - 1; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 1; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 1; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 1; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 1; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 1; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 1; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 1; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 1; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 0; a1 < 4; ++a1)
	for (int a2 = 1; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
	
	for (int a1 = 1; a1 < 4; ++a1)
	for (int a2 = 0; a2 < 4; ++a2)
	for (int a3 = 0; a3 < 4; ++a3)
	for (int a4 = 0; a4 < 4; ++a4)
	for (int a5 = 0; a5 < 4; ++a5)
	for (int a6 = 0; a6 < 4; ++a6)
	for (int a7 = 0; a7 < 4; ++a7)
	for (int a8 = 0; a8 < 4; ++a8)
	for (int a9 = 0; a9 < 4; ++a9)
	for (int a10 = 0; a10 < 4; ++a10)
		ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
	
	
	
	q = read();
	while (q--) {
		op = read();
		for (int i = 1; i <= m; ++i) {
			a[i] = read1();
			a[i]--;
		}
		
		if (op == 1) {
			ans = ans1[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
		if (op == 2) {
			ans = ans2[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
		if (op == 3) {
			ans = ans3[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
		if (op == 4) {
			ans = ans4[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
			write(ans);
			putchar('\n');
			
			continue;
		}
	}
	
	return 0;
}
posted @ 2021-08-24 09:11  あおいSakura  阅读(82)  评论(0编辑  收藏  举报