暴力没过样例……
查看原帖
暴力没过样例……
86971
TRZ_2007楼主2020/8/28 13:59
#include <bits/stdc++.h>
using namespace std;

const int N = 40009;

namespace IO {
	template<class T>
	inline void read(T &x) {
		int tag = 1;
		x = 0;
		char ch = getchar();
		while(ch < '0' || ch > '9') {
			if(ch == '-') tag = -1;
			ch = getchar();
		}
		while(ch >= '0' && ch <= '9') {
			x = x * 10 + ch - '0';
			ch = getchar();
		}
		x = x * tag;
	}
	
	template<class T>
	inline void print(T &x) {
		if(x < 0) {
			putchar('-');
			x = -x;
		}
		if(x == 0) {
			putchar(48);
			return;
		}
		int len = 0,tag[50];
		while(x > 0) {
			tag[++len] = x % 10;
			x /= 10;
		}
		for(int i = len;i >= 1;i--) putchar(tag[i] + 48);
	}
};  using namespace IO;

int n,m,val[N];
int len,t[N],maxn,minn;

struct node {
	int a,b,c,d;
}ans[N];

int main() {
	read(n);read(m);minn = n;
	for(int i = 1;i <= m;i++) {
		read(val[i]);
		t[val[i]]++;
		maxn = max(maxn,val[i]);
		minn = min(minn,val[i]);
	}
	for(int i = minn;i <= maxn - 3;i++) {
		if(!t[i]) continue;
		for(int j = i + 1;j <= maxn - 2;j++) {
			if(!t[j]) continue;
			for(int k = j + 1;k <= maxn - 1;k++) {
				int p = (j - i + (k << 1));
			//	printf("%d %d %d %d\n",i,j,k,p >> 1);
				if(!t[k] || !t[p >> 1]) continue;
				if(p & 1) continue;
				if((j - i) * 3 < k - j) {
					int tmp1 = t[j] * t[k] * t[p >> 1];
					int tmp2 = t[i] * t[k] * t[p >> 1];
					int tmp3 = t[i] * t[j] * t[p >> 1];
					int tmp4 = t[i] * t[j] * t[k];
					ans[i].a += tmp1;ans[j].b += tmp2;
					ans[k].c += tmp3;ans[p >> 1].d += tmp4;
				}
			}
		}
	}
	for(int i = 1;i <= m;i++) {
		print(ans[val[i]].a);putchar(' ');
		print(ans[val[i]].b);putchar(' ');
		print(ans[val[i]].c);putchar(' ');
		print(ans[val[i]].d);putchar(' ');puts("");
	//	printf("%d %d %d %d\n",ans[val[i]].a,ans[val[i]].b,ans[val[i]].c,ans[val[i]].d);
	}
	return 0;
}

IO没有任何问题,求调

2020/8/28 13:59
加载中...