Submission #1262852

#TimeUsernameProblemLanguageResultExecution timeMemory
1262852proofy별들과 삼각형 (IZhO11_triangle)C++20
100 / 100
629 ms26844 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

  int n;
	cin >> n;
	vector<int> x(n), y(n);

	for (int i = 0; i < n; i++) cin >> x[i] >> y[i];

	vector<int> all;
	all.reserve(2 * n);

	for (int u : x) all.push_back(u);
	for (int u : y) all.push_back(u);

	sort(all.begin(), all.end());
	all.erase(unique(all.begin(), all.end()), all.end());

	for (int& u : x) u = lower_bound(all.begin(), all.end(), u) - all.begin();
	for (int& u : y) u = lower_bound(all.begin(), all.end(), u) - all.begin();

	map<int, int> Xs, Ys;
	map<pair<int, int>, int> freq;

	for (int i = 0; i < n; i++) {
		Xs[x[i]] += 1;
		Ys[y[i]] += 1;
		freq[make_pair(x[i], y[i])] += 1;
	}

	ll ans = 0;
	for (int i = 0; i < n; i++) {
		int freq_me = freq[make_pair(x[i], y[i])];
		ans += (Xs[x[i]] - freq_me) * 1LL * (Ys[y[i]] - freq_me);
	}

	cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...