62162023-11-08 10:27:37EsVagyCsodálatos Csillagképekcpp17Időlimit túllépés 65/1001.083s89656 KiB
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
#include <map>

using namespace std;

struct star
{
	int x, y;
};

int main()
{
	map<int, set<int>> rows;
	map<int, set<int>> cols;
	vector<star> stars;

	int t;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		star s;
		cin >> s.x >> s.y;

		stars.push_back(s);

		if (rows.count(s.y) == 0)
		{
			rows.insert(make_pair(s.y, set<int>()));
		}
		rows[s.y].insert(s.x);

		if (cols.count(s.x) == 0)
		{
			cols.insert(make_pair(s.x, set<int>()));
		}
		cols[s.x].insert(s.y);
	}

	long int ans = 0;

	for (star s : stars)
	{
		set<int>::iterator ix = rows[s.y].find(s.x);
		int x = distance(rows[s.y].begin(), ix);
		int up = x;
		int down = rows[s.y].size() - x - 1;

		set<int>::iterator iy = cols[s.x].find(s.y);
		int y = distance(cols[s.x].begin(), iy);
		int left = y;
		int right = cols[s.x].size() - y - 1;

		ans += up * right;
		ans += left * up;
		ans += down * left;
		ans += right * down;
	}

	cout << ans << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1940 KiB
subtask225/25
2Elfogadva3ms2136 KiB
3Elfogadva3ms2344 KiB
4Elfogadva3ms2464 KiB
5Elfogadva3ms2560 KiB
subtask340/40
6Elfogadva4ms2976 KiB
7Elfogadva4ms3236 KiB
8Elfogadva4ms3460 KiB
9Elfogadva4ms3460 KiB
10Elfogadva4ms3408 KiB
11Elfogadva6ms3648 KiB
subtask40/35
12Elfogadva307ms14312 KiB
13Időlimit túllépés1.024s89656 KiB
14Elfogadva397ms49608 KiB
15Elfogadva601ms20764 KiB
16Időlimit túllépés1.034s28404 KiB
17Elfogadva652ms73904 KiB
18Elfogadva182ms30088 KiB
19Időlimit túllépés1.083s19752 KiB
20Elfogadva864ms88832 KiB
21Időlimit túllépés1.049s47908 KiB