在78秒内通过所有测试点

我祝前面的WA声一片 · 发布于 10 小时前 · 浏览 8 回复 0

include <bits/stdc++.h>

using namespace std; int n, m; int a[15], b[15];

bool vis[500] = {};

void dfs(int dep, int k, int sum, int i) {

//cout << sum << endl;
vis[sum] = 1;
if (dep == k)
	return;
for (int j = 1; j <= n; j++) {
	if (1) {
		dfs(dep, k + 1, (sum += a[j]) % 360, i + 1);
		dfs(dep, k + 1, abs(sum -= a[j]) % 360, i + 1);

	}

}
return;

}

int main() {

cin >> n >> m;
for (int i = 1; i <= n; i++) {
	cin >> a[i];
}
for (int i = 1; i <= m; i++) {
	cin >> b[i];
}
int d = 1;
while (d != n + 1) {
	dfs(d, 1, 0, 1);
	d++;
}
for (int i = 1; i <= m; i++) {
	if (vis[b[i]]) {
		cout << "YES\n";
	} else {
		cout << "NO\n";
	}
}
return 0;

}

全部回复 共 0 条

还没有人回复。往下写第一条。

发表回复