제출 #1283664

#제출 시각아이디문제언어결과실행 시간메모리
1283664Jawad_Akbar_JJ별들과 삼각형 (IZhO11_triangle)C++20
100 / 100
336 ms15492 KiB
#include <iostream> #include <vector> #include <map> #include <algorithm> using namespace std; const int N = 1<<19; vector<int> vec1[N], vec2[N]; map<int,int> mp1, mp2, mp11, mp22; int x[N], y[N], cur1, cur2; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); long long n, ans = 0; cin>>n; for (int i=1;i<=n;i++){ cin>>x[i]>>y[i]; mp1[x[i]]; mp2[y[i]]; } for (auto [i, x] : mp1) mp11[i] = ++cur1; for (auto [i, x] : mp2) mp22[i] = ++cur2; for (int i=1;i<=n;i++){ x[i] = mp11[x[i]]; y[i] = mp22[y[i]]; vec1[x[i]].push_back(y[i]); vec2[y[i]].push_back(x[i]); } for (int i=1;i<=n;i++){ sort(begin(vec1[i]), end(vec1[i])); sort(begin(vec2[i]), end(vec2[i])); } for (int i=1;i<=n;i++){ int u = vec1[x[i]].end() - upper_bound(begin(vec1[x[i]]), end(vec1[x[i]]), y[i]); int U = upper_bound(begin(vec1[x[i]]), end(vec1[x[i]]), y[i] - 1) - vec1[x[i]].begin(); int v = vec2[y[i]].end() - upper_bound(begin(vec2[y[i]]), end(vec2[y[i]]), x[i]); int V = upper_bound(begin(vec2[y[i]]), end(vec2[y[i]]), x[i] - 1) - vec2[y[i]].begin(); ans += 1LL * (U + u) * (v + V); } cout<<ans<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...