제출 #1192559

#제출 시각아이디문제언어결과실행 시간메모리
1192559stefanopulos별들과 삼각형 (IZhO11_triangle)C++20
100 / 100
256 ms11624 KiB
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <bits/stdc++.h>
 
using namespace std;
using namespace __gnu_pbds;
 
typedef long long ll;
typedef long double ldb;
 
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<ldb,ldb> pdd;

#define ff(i,a,b) for(int i = a; i <= b; i++)
#define fb(i,b,a) for(int i = b; i >= a; i--)
#define trav(a,x) for(auto& a : x)
 
#define sz(a) (int)(a).size()
#define fi first
#define se second
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

// os.order_of_key(k) the number of elements in the os less than k
// *os.find_by_order(k)  print the k-th smallest number in os(0-based)

const int mod = 1000000007;
const int inf = 1e9 + 5;
const int mxN = 300005; 

int n;

int main(){
    cin.tie(0)->sync_with_stdio(0);

    cin >> n; map<int,vector<int>> mpX, mpY;
    ff(i,1,n){
        int x, y;
        cin >> x >> y;
        mpX[x].pb(y);
        mpY[y].pb(x);
    }

    ll rez = 0;
    for(auto [x, A] : mpX){
        for(auto y : A){
            if(mpY.count(y)){
                rez += 1ll * (sz(mpY[y]) - 1) * (sz(A) - 1);
            }
        }
    }

    cout << rez << '\n';

    return 0;
}
/*

3
0 0
1 0
0 1

4
0 0
1 0
0 1
1 1

// probati bojenje sahovski
*/
 
 
 
 
 
#Verdict Execution timeMemoryGrader output
Fetching results...