Untitled
unknown
plain_text
a year ago
1.3 kB
10
Indexable
#include <iostream>
using namespace std;
long long r, k;
long long m;
const int MN = 102;
long long cr[MN][2];
long long n;
long long ch[MN][3];
long long comb[MN];
long long ans = 0;
void C(long long i, long long sz) {
if (sz == k) {
int check_resident[MN] = {0};
for (int j = 0; j < k; ++j) {
for (int ir = 0; ir < n; ++ir) {
long long diff_x = cr[comb[j]][0] - ch[ir][0];
long long diff_y = cr[comb[j]][1] - ch[ir][1];
if (diff_x*diff_x + diff_y*diff_y <= r*r) {
check_resident[ir] = true;
}
}
}
long long cnt = 0;
for (long long ir = 0; ir < n; ++ir) {
if (check_resident[ir]) {
cnt += ch[ir][2];
}
}
ans = max(ans, cnt);
return;
}
for (long long j = i; j < m; ++j) {
comb[sz] = j;
C(j + 1, sz + 1);
}
}
int main()
{
freopen("Text.txt", "r", stdin);
long long t;
cin >> t;
for (long long test_case = 1; test_case <= t; ++test_case) {
cin >> k >> r;
cin >> m;
for (long long i = 0; i < m; ++i) {
cin >> cr[i][0] >> cr[i][1];
}
cin >> n;
for (long long i = 0; i < n; ++i) {
cin >> ch[i][0] >> ch[i][1] >> ch[i][2];
}
ans = 0;
C(0, 0);
cout << "#" << test_case << " " << ans << '\n';
}
return 0;
}Editor is loading...
Leave a Comment