Untitled

 avatar
unknown
plain_text
a year ago
1.3 kB
5
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