Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.5 kB
2
Indexable
#include<iostream>
using namespace std;
int k, r,m,n;
int loc[20][2];
int khu[100][3];
bool in[20][100];
int visit[20];
int ans;
int A[20];

void reset(){
	for(int u =0; u < n; u++){
		visit[u] =0;
	}
}

void Try(int i, int start){

	for(int j =start; j <= m-1; j++){
		A[i] = j;
		if(i==k-1){
			int tong =0;
			for(int h=0; h<k;h++){
				
				for(int u =0; u < n; u++){
					
					if(visit[u] == 0 && in[A[h]][u] == true){
						tong += khu[u][2];
						visit[u] =1;
					}
					
				}
			}
				if(ans< tong) ans = tong ;
				reset();
			
		}
		else {
			Try(i+1, j+1);
		}
		
	}
}
int binh(int x){
	int result;
	result = x*x;
	return result;
}


int main(){
	freopen("Text.txt", "r", stdin);
	int test;
	cin >> test;
 	for(int tc=1; tc <= test; tc++){
		cin >> k >>r >> m; // m la so location tiem nang, k la so cua hang
		for(int i=0; i<m;i++){
			cin >> loc[i][0] >> loc[i][1];
		}
		cin >> n; // n la so khu dan cu
		for(int i=0; i<n;i++){
			cin >> khu[i][0] >> khu[i][1] >> khu[i][2]; // luu toa do cac khu dan cu va so dan trong do
		}
		// xem xem khu dan cu nao nam trong vung cua loc nao
		for(int i=0; i< m; i++){
			for(int j =0; j < n; j++){
				if((binh(khu[j][0]-loc[i][0]) + binh(khu[j][1]-loc[i][1])) <= binh(r)){
					in[i][j] = true;
				}
				else in[i][j] =false;
			}
		}
		ans=0;
		Try(0,0);
		
		cout << "#" << tc << " " << ans << endl;

	}
	return 0;
}