func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<pair<long long, long long> > points;   vector<pair<long long, pair<long long, long long> > > areas;   map<long long, vector<long long> > pm;   int main() {     int n, m, k;     scanf( %i%i%i , &n, &m, &k);     for (int i = 0; i < n; i++) {       int x, y;       scanf( %i%i , &x, &y);       points.push_back(pair<long long, long long>(x, y));     }     for (int i = 0; i < m; i++) {       int c1, c2, r;       scanf( %i%i%i , &r, &c1, &c2);       areas.push_back(pair<long long, pair<long long, long long> >(           r, pair<long long, long long>(c1, c2)));     }     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         if ((points[i].first - areas[j].second.first) *                     (points[i].first - areas[j].second.first) +                 (points[i].second - areas[j].second.second) *                     (points[i].second - areas[j].second.second) <             areas[j].first * areas[j].first) {           pm[i].push_back(j);         }       }       sort(pm[i].begin(), pm[i].end());     }     for (int i = 0; i < k; i++) {       int a, b;       scanf( %i%i , &a, &b);       a -= 1;       b -= 1;       vector<long long> tmp1 = pm[a];       vector<long long> tmp2 = pm[b];       int p = 0;       int cnt = 0;       for (int i = 0; i < tmp1.size(); i++) {         while (p < tmp2.size() && tmp2[p] < tmp1[i]) {           cnt++;           p++;         }         if (p == tmp2.size() || tmp2[p] != tmp1[i]) {           cnt++;         }         if (p != tmp2.size() && tmp2[p] == tmp1[i]) {           p++;         }       }       printf( %i n , cnt + (tmp2.size() - p));     }     return 0;   }   