func_code_string: #include <bits/stdc++.h>   using namespace std;   void B();   int main() {     ios::sync_with_stdio(0);     cout.tie(0);     cin.tie(0);     B();   }   class segmen {    public:     long long x1, y1, x2, y2;     segmen(long long xx1, long long yy1, long long xx2, long long yy2)         : x1{xx1}, x2{xx2}, y1{yy1}, y2{yy2} {}     segmen() {}   };   vector<segmen> hor, ver;   const long long N = 10010;   const long long shift = 5001;   bool compar(segmen A, segmen B) { return A.y1 <= B.y1; }   long long T[N];   void upd(long long x, long long val) {     for (; x < N; x += (x & (-x))) T[x] += val;   }   long long F(long long x) {     long long ret = 0;     for (; x; x -= (x & (-x))) ret += T[x];     return ret;   }   long long gett(long long l, long long r) { return F(r) - F(l - 1); }   vector<pair<long long, long long> > H[N];   vector<pair<long long, long long> > V[N];   void B() {     long long n;     cin >> n;     for (long long i = 0; i < n; i++) {       long long x1, x2, y1, y2;       cin >> x1 >> y1 >> x2 >> y2;       x1 += shift;       x2 += shift;       y1 += shift;       y2 += shift;       if (y1 == y2) {         H[y1].push_back({min(x1, x2), max(x1, x2)});       }       if (x1 == x2) {         V[x1].push_back({min(y1, y2), max(y1, y2)});       }     }     long long ans = 0;     vector<long long> endy[N];     for (long long i = 1; i < N; i++) {       for (auto A : H[i]) {         long long xl = A.first;         long long xr = A.second;         long long maxn = 0;         for (long long j = xl; j <= xr; j++) {           for (auto B : V[j]) {             if (B.first <= i && B.second > i) {               upd(j, 1);               endy[B.second].push_back(j);               maxn = max(maxn, B.second);             }           }         }         for (long long j = i + 1; j <= maxn; j++) {           for (auto B : H[j]) {             long long ret = gett(B.first, B.second);             ans += (ret * (ret - 1)) >> 1;           }           for (auto B : endy[j]) {             upd(B, -1);           }           endy[j].clear();         }       }     }     cout << ans <<   n ;   }   