std::정렬부터 시작하는 디버깅 생활

N = 2와 두 점 (1, 0), (0, 1)을 출력하는 문제로, std::sort 비교 함수의 오류를 드러내는 고정된 반례를 내놓으면 된다.

쉬움1구현정렬수학기하아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

지구이는 std::sort를 무한히 신뢰한다. 빠른 정렬을 직접 구현하려면 적어도 2020줄이 넘지만, std::sort는 한 줄이면 끝나기 때문이다. 구조체 배열에 쓰려면 부등호 연산을 정의하는 식의 추가 구현이 필요하지만, 직접 구현하는 일에 비하면 그 정도는 단점도 아니었다.

그래서 지구이는 매일 S.M.T를 외치며 코드를 짰다. 어느 날 이유를 알 수 없는 "틀렸습니다"를 받았다. 문제는 아주 간단하다.

평면의 x0x \ge 0, y0y \ge 0 부분에 점 NN개가 있다. 이 점들을 다음 조건을 만족하도록 정렬하라. 모든 i<ji < j에 대해 ii번째 점 (xi,yi)(x_i, y_i)jj번째 점 (xj,yj)(x_j, y_j)xiyjxjyix_i y_j \le x_j y_i를 만족한다.

지구이는 두 점 l=(lx,ly)l = (l_x, l_y), r=(rx,ry)r = (r_x, r_y)에 대해 lxry<lyrxl_x r_y < l_y r_x이면 llrr보다 앞이라고 보고 std::sort로 정렬했지만, 틀렸다. 코드에는 std::sort밖에 없는데도 계속 틀리자 데이터를 넣어 봤지만 반례를 찾지 못했다.

지구이를 도와 반례 데이터를 출력하라. 이 문제에서 요구하는 출력은 유일하게 정해져 있다. 점의 개수 NN22이고, 두 점은 순서대로 (1,0)(1, 0)(0,1)(0, 1)이다.

입력

입력이 없다.

출력

첫 줄에 점의 개수 NN을 출력한다. NN22 이상 10001000 이하여야 한다. 이 문제에서 NN22이다.

다음 NN개의 줄에 xx좌표와 yy좌표를 출력한다. 각 좌표는 00 이상 10001000 이하여야 한다. 두 점은 순서대로 (1,0)(1, 0), (0,1)(0, 1)이다.

힌트

채점 서버는 libstdc++로 지구이의 코드를 컴파일했다.