90pts,WA + RE
查看原帖
90pts,WA + RE
416959
alexbear103楼主2021/10/6 10:59
#include <bits/stdc++.h>
#define int long long
#define inf LONG_MAX
using namespace std;
const int maxn = 15005;
int n, m, x[maxn], exz[maxn], cnta[maxn], cntb[maxn], cntc[maxn], cntd[maxn]; 
signed main() {
	cin >> n >> m;
	for (int i = 1; i <= m; ++i) {
		cin >> x[i]; exz[x[i]]++;
	}
	for (int i = 1; i * 9 < n; ++i) {
		int sum = 0;
		for (int d = 9 * i + 2; d <= n; ++d) {
//			if (!exz[d]) continue;
			int c = d - i, mxb = c - 1 - 6 * i, mxa = mxb - 2 * i;
			sum += exz[mxa] * exz[mxb];
			cntd[d] += exz[c] * sum;
			cntc[c] += exz[d] * sum;
		}
		sum = 0;
		for (int a = n - 9 * i - 1; a >= 1; --a) {
//			if (!exz[a]) continue;
			int b = a + 2 * i, mic = b + 6 * i + 1, mid = mic + i;
			sum += exz[mic] * exz[mid];
			cnta[a] += exz[b] * sum;
			cntb[b] += exz[a] * sum;
		}
	} 
	for (int i = 1; i <= m; ++i) {
		int nx = x[i];
		cout << cnta[nx] << ' ' << cntb[nx] << ' ' << cntc[nx] << ' ' << cntd[nx] << endl;
	}
	return 0;
}

2021/10/6 10:59
加载中...