#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#include <cmath>
#include <limits.h>
#define s(a) scanf("%d",&a)
#define p(a) printf("%d",a)
using namespace std;
struct coordinates
{
int x,y;
};
struct nodes
{
int x,y,w;
};
coordinates a[22]; // structure array to store co-ordinates of locations
nodes b[102]; // structure array to store co-ordinates of solitaire and number of peoples.
bool visited[102]; // boolean array to mark a check if a particular node is previously visited or not
// Utility functionn to count number of set bits... complexity of this is log(n)
int countSetBits(int n)
{
int count = 0;
while (n)
{
n &= (n-1) ;
count++;
}
return count;
}
/*
what i'm trying to do is taking all subsets of location
and see if this subset has number of set bits equal to number of restaurant i.e. k
if so, iterate over this subset and for each set bit calculate the total number of
people. Update the answer if required. But getting TLE :/
*/
int k,r,m,i,j,n,p,ans=INT_MIN,subsets,current_sum;
int main()
{
//freopen("input.txt","r",stdin);
// Inputs dude Inputs :P ==============
s(k);s(r);
s(m);
for(i=0;i<m;i++)
{ s(a[i].x); s(a[i].y); }
s(n);
for(i=0;i<n;i++)
{ s(b[i].x); s(b[i].y); s(b[i].w); }
//=====================================
subsets=(1<<m);
//Iterate through all subsets
for(i=1;i<subsets;i++)
{
//if set bits equal to number of restaurant i.e. k
if(k==countSetBits(i))
{
// mark every solitaire as unvisited
memset(visited,0,sizeof(visited));
current_sum=0;
// check for possible sum
for(j=0;j<m;j++)
{
if((i&(1<<j))>0) // if this is set then find all nodes in range of j'th location
{
coordinates source=a[j]; // make j as a source
for(p=0;p<n;p++) // check on all destination nodes
{
nodes destinatn=b[p];
// distance between source and destination
double distance=(double)((source.x-destinatn.x)*(source.x-destinatn.x) + (source.y-destinatn.y)*(source.y-destinatn.y));
// if this node is not visited and range is covered, add its weight and make the node visited
if(!visited[p] && distance<=(double)(r*r))
{
current_sum+=destinatn.w;
visited[p]=true;
}
}
}
}
// if current sum is larger than previous one, update answer
if(current_sum>ans)
ans=current_sum;
}
}
printf("%d",ans);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8bGltaXRzLmg+CiNkZWZpbmUgcyhhKSBzY2FuZigiJWQiLCZhKQojZGVmaW5lIHAoYSkgcHJpbnRmKCIlZCIsYSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBjb29yZGluYXRlcwp7CiAgICBpbnQgeCx5Owp9OwpzdHJ1Y3Qgbm9kZXMKewogICAgaW50IHgseSx3Owp9OwoKY29vcmRpbmF0ZXMgYVsyMl07ICAvLyBzdHJ1Y3R1cmUgYXJyYXkgdG8gc3RvcmUgY28tb3JkaW5hdGVzIG9mIGxvY2F0aW9ucwpub2RlcyBiWzEwMl07ICAgICAgIC8vIHN0cnVjdHVyZSBhcnJheSB0byBzdG9yZSBjby1vcmRpbmF0ZXMgb2Ygc29saXRhaXJlIGFuZCBudW1iZXIgb2YgcGVvcGxlcy4KYm9vbCB2aXNpdGVkWzEwMl07ICAvLyBib29sZWFuIGFycmF5IHRvIG1hcmsgYSBjaGVjayBpZiBhIHBhcnRpY3VsYXIgbm9kZSBpcyBwcmV2aW91c2x5IHZpc2l0ZWQgb3Igbm90CgovLyBVdGlsaXR5IGZ1bmN0aW9ubiB0byBjb3VudCBudW1iZXIgb2Ygc2V0IGJpdHMuLi4gY29tcGxleGl0eSBvZiB0aGlzIGlzIGxvZyhuKQppbnQgY291bnRTZXRCaXRzKGludCBuKQp7CiAgICBpbnQgY291bnQgPSAwOwogICAgd2hpbGUgKG4pCiAgICB7CiAgICAgIG4gJj0gKG4tMSkgOwogICAgICBjb3VudCsrOwogICAgfQogICAgcmV0dXJuIGNvdW50Owp9Ci8qCndoYXQgaSdtIHRyeWluZyB0byBkbyBpcyB0YWtpbmcgYWxsIHN1YnNldHMgb2YgbG9jYXRpb24KYW5kIHNlZSBpZiB0aGlzIHN1YnNldCBoYXMgbnVtYmVyIG9mIHNldCBiaXRzIGVxdWFsIHRvIG51bWJlciBvZiByZXN0YXVyYW50IGkuZS4gawppZiBzbywgaXRlcmF0ZSBvdmVyIHRoaXMgc3Vic2V0IGFuZCBmb3IgZWFjaCBzZXQgYml0IGNhbGN1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mCnBlb3BsZS4gVXBkYXRlIHRoZSBhbnN3ZXIgaWYgcmVxdWlyZWQuIEJ1dCBnZXR0aW5nIFRMRSA6LwoqLwoKaW50IGsscixtLGksaixuLHAsYW5zPUlOVF9NSU4sc3Vic2V0cyxjdXJyZW50X3N1bTsKaW50IG1haW4oKQp7CiAgICAvL2ZyZW9wZW4oImlucHV0LnR4dCIsInIiLHN0ZGluKTsKCiAgICAvLyBJbnB1dHMgZHVkZSBJbnB1dHMgOlAgPT09PT09PT09PT09PT0KICAgIHMoayk7cyhyKTsKICAgIHMobSk7CiAgICBmb3IoaT0wO2k8bTtpKyspCiAgICB7IHMoYVtpXS54KTsgcyhhW2ldLnkpOyB9CiAgICBzKG4pOwogICAgZm9yKGk9MDtpPG47aSsrKQogICAgeyBzKGJbaV0ueCk7IHMoYltpXS55KTsgcyhiW2ldLncpOyB9CiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICBzdWJzZXRzPSgxPDxtKTsKICAgIAogICAgLy9JdGVyYXRlIHRocm91Z2ggYWxsIHN1YnNldHMKICAgIGZvcihpPTE7aTxzdWJzZXRzO2krKykKICAgIHsKICAgICAgICAvL2lmIHNldCBiaXRzIGVxdWFsIHRvIG51bWJlciBvZiByZXN0YXVyYW50IGkuZS4gawogICAgICAgIGlmKGs9PWNvdW50U2V0Qml0cyhpKSkKICAgICAgICB7CiAgICAgICAgICAgIC8vIG1hcmsgZXZlcnkgc29saXRhaXJlIGFzIHVudmlzaXRlZAogICAgICAgICAgICBtZW1zZXQodmlzaXRlZCwwLHNpemVvZih2aXNpdGVkKSk7CiAgICAgICAgICAgIGN1cnJlbnRfc3VtPTA7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgcG9zc2libGUgc3VtCiAgICAgICAgICAgIGZvcihqPTA7ajxtO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoKGkmKDE8PGopKT4wKSAvLyBpZiB0aGlzIGlzIHNldCB0aGVuIGZpbmQgYWxsIG5vZGVzIGluIHJhbmdlIG9mIGondGggbG9jYXRpb24KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlcyBzb3VyY2U9YVtqXTsgLy8gbWFrZSBqIGFzIGEgc291cmNlCiAgICAgICAgICAgICAgICAgICAgZm9yKHA9MDtwPG47cCsrKSAvLyBjaGVjayBvbiBhbGwgZGVzdGluYXRpb24gbm9kZXMKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzIGRlc3RpbmF0bj1iW3BdOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzdGFuY2UgYmV0d2VlbiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkaXN0YW5jZT0oZG91YmxlKSgoc291cmNlLngtZGVzdGluYXRuLngpKihzb3VyY2UueC1kZXN0aW5hdG4ueCkgKyAoc291cmNlLnktZGVzdGluYXRuLnkpKihzb3VyY2UueS1kZXN0aW5hdG4ueSkpOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBub2RlIGlzIG5vdCB2aXNpdGVkIGFuZCByYW5nZSBpcyBjb3ZlcmVkLCBhZGQgaXRzIHdlaWdodCBhbmQgbWFrZSB0aGUgbm9kZSB2aXNpdGVkCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCF2aXNpdGVkW3BdICYmIGRpc3RhbmNlPD0oZG91YmxlKShyKnIpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3N1bSs9ZGVzdGluYXRuLnc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGVkW3BdPXRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGlmIGN1cnJlbnQgc3VtIGlzIGxhcmdlciB0aGFuIHByZXZpb3VzIG9uZSwgdXBkYXRlIGFuc3dlcgogICAgICAgICAgICBpZihjdXJyZW50X3N1bT5hbnMpCiAgICAgICAgICAgICAgICBhbnM9Y3VycmVudF9zdW07CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCIlZCIsYW5zKTsKICAgIHJldHVybiAwOwp9Cg==