马蜂良好
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N = 1e3+100;
struct P {
ll x, y;
} p[N];
struct node {
double x, y, val;
} a[N];
ll m, n, cnt,num,ans;
double mx=-1e9;
ll mon[N], fa[N];
bool cmp(node a, node b) {
return a.val < b.val;
}
ll fin(ll x) {
if (fa[x] == x) return x;
return fa[x] = fin(fa[x]);
}
int main() {
cin >> m;
for (ll i = 1; i <= m; i++) {
cin >> mon[i];
}
cin >> n;
for (ll i = 1; i <= 1000; i++) fa[i] = i;
for (ll i = 1; i <= n; i++) {
cin >> p[i].x >> p[i].y;
}
for (ll i = 1; i < n; i++) {
for (ll j = i + 1; j <= n; j++) {
cnt++;
a[cnt].x = i;
a[cnt].y = j;
a[cnt].val = sqrt((p[i].x - p[j].x) * (p[i].x - p[j].x) * 1.0 + (p[i].y - p[j].y) * (p[i].y - p[j].y) * 1.0);
}
}
// cout<<"<<<\n";
// for(ll i=1;i<=cnt;i++) cout<<a[i].val<<" ";
// cout<<"\n";
sort(a + 1, a + cnt + 1, cmp);
for (ll i = 1; i <= n; i++) {
ll t1 = fin(a[i].x), t2 = fin(a[i].y);
if (t1 == t2) continue;
fa[t1] = t2;
num++;mx=max(mx,a[i].val);
if(num==n-1) break;
}
// cout<<"<<<\n";
// for(ll i=1;i<=cnt;i++) cout<<a[i].val<<" ";
// cout<<"\n";
// cout<<"<<<"<<mx<<"\n";
for(ll i=1;i<=m;i++){
if(mon[i]>=mx) ans++;
}
cout<<ans;
return 0;
}