求HACK呀 QWQ
查看原帖
求HACK呀 QWQ
90972
shitbro楼主2020/8/8 19:33
#include <bits/stdc++.h>
#define ull unsigned long long
#define MAXN 100005
using namespace std;
ull Pow[MAXN],sum1[MAXN],sum0[MAXN],a[MAXN];
ull m,sum;
int main() {
	//clock_t start = clock();
	Pow[0] = 1;
	for(int i = 1;i <= 50;i ++) Pow[i] = Pow[i - 1] * 2;
	int n; scanf("%d",&n);
	for(int i = 1;i <= n;i ++) {
		scanf("%llu",&a[i]);
		for(int j = 50;j >= 0;j --) {
			if(((ull)1 << j) & a[i]) sum1[j] ++;
			else sum0[j] ++;
		}
		sum += a[i];
	}
	int q; scanf("%d",&q);
	for(int i = 1;i <= q;i ++) {
		scanf("%llu",&m);
		ull ans = 0,res = sum;
		for(int j = 50;j >= 0;j --) {
			if(res + (sum0[j] * Pow[j]) - (sum1[j] * Pow[j]) <= m) {
				res = res + (sum0[j] * Pow[j]) - (sum1[j] * Pow[j]);
				ans += Pow[j];
			}
		}
		if(ans == 0) printf("-1\n");
		else printf("%llu\n",ans);
	} 
	//clock_t end = clock();
	//cout << (double)(end - start) / CLOCKS_PER_SEC << endl;
	return 0;
}
2020/8/8 19:33
加载中...