func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( O3 )   using namespace std;   string to_string(string s) { return     + s +    ; }   string to_string(const char* s) { return to_string((string)s); }   string to_string(bool b) { return (b ?  true  :  false ); }   template <typename A, typename B>   string to_string(pair<A, B> p) {     return  (  + to_string(p.first) +  ,   + to_string(p.second) +  ) ;   }   template <typename A>   string to_string(A v) {     bool first = true;     string res =  { ;     for (const auto& x : v) {       if (!first) {         res +=  ,  ;       }       first = false;       res += to_string(x);     }     res +=  } ;     return res;   }   void debug_out() { cerr << endl; }   template <typename Head, typename... Tail>   void debug_out(Head H, Tail... T) {     cerr <<     << to_string(H);     debug_out(T...);   }   const int N = 2e3 + 7, M = 1e4, OO = 0x3f3f3f3f;   int vis[N][N];   int main() {     int TCF = 1;     while (TCF--) {       int n;       scanf( %d , &n);       ;       vector<pair<int, int>> p;       int x, y;       for (int i = 0; i < n; ++i) {         scanf( %d %d , &x, &y);         p.emplace_back(x, y);         vis[x + 1000][y + 1000] = 1;       }       vector<pair<int, int>> mid;       int ans = 0;       for (int i = (0); i < (n); i++) {         for (int j = (i + 1); j < (n); j++) {           if (i == j) continue;           int mx = p[i].first + p[j].first;           int my = p[i].second + p[j].second;           if (mx % 2 == 0 && my % 2 == 0) {             mx /= 2;             my /= 2;             if (vis[mx + 1000][my + 1000]) {               ans++;             }           }         }       }       printf( %d n , ans);     }   }   