나의 브을로오그으

[c++] 11651번 : 좌표 정렬하기2 본문

알고리즘/BaekJoon

[c++] 11651번 : 좌표 정렬하기2

__jhp_+ 2022. 5. 12. 14:44

https://www.acmicpc.net/problem/11651

 

11651번: 좌표 정렬하기 2

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

#include <cstdio>
#include <algorithm>

using namespace std;

char buf[1 << 15];
int idx = 1 << 15;

inline char read()
{
	if (idx == 1 << 15)
	{
		fread(buf, 1, 1 << 15, stdin);
		idx = 0;
	}
	return buf[idx++];
}

inline int readInt()
{
	int sum = 0;
	int flag = 1;
	char now = read();
	
	while (now == ' ' || now == '\n') now = read();
	if (now == '-')
	{
		flag = -1;
		now = read();
	}
	while (now >= '0' && now <= '9')
	{
		sum = sum * 10 + now - 48;
		now = read();
	}
	return sum * flag;
}

int compare(pair<int, int> p1, pair<int, int> p2)
{
	return p1.second == p2.second ? p1.first < p2.first : p1.second < p2.second;
}
int main()
{
	int n;
	n = readInt();
	pair<int, int> p[100000];

	for (int i = 0; i < n; ++i)
	{
		p[i].first = readInt();
		p[i].second = readInt();
	}
	sort(p, p + n, compare);
	for (int i = 0; i < n; ++i)
	{
		printf("%d %d\n", p[i].first, p[i].second);
	}

	return 0;
}

'알고리즘 > BaekJoon' 카테고리의 다른 글

[c++] 15829번 : Hashing  (0) 2022.05.16
[c++] 11866번 : 요세푸스 문제 0  (0) 2022.05.12
[c++] 11650번 : 좌표 정렬하기  (0) 2022.05.12
[c++] 11050번 : 이항 계수 1  (0) 2022.05.10
[c++] 10989번 : 수 정렬하기3  (0) 2022.05.10