막대기 줍기
시간 제한1초메모리 제한128 MB
던진 순서대로 주어진 선분 중에서 나중에 던진 선분과 교차하지 않는 선분을 모두 찾아 출력한다.
문제
스탠(Stan)에게 길이가 서로 다른 막대기 개가 있다. 그는 막대기를 한 번에 하나씩 아무렇게나 바닥에 던진다. 막대기는 매우 얇아서 두께는 무시할 수 있다.
던지기를 모두 끝낸 뒤, 스탠은 맨 위에 있는 막대기(top stick), 즉 그 위에 다른 막대기가 하나도 놓여 있지 않은 막대기들을 찾으려고 한다. 막대기 가 막대기 보다 나중에 던져졌고 두 막대기가 서로 교차하면(끝점에서 닿는 경우도 교차로 본다), 막대기 는 막대기 위에 놓인 것으로 본다. 어떤 막대기든, 자신보다 나중에 던져진 막대기 중 자신과 교차하는 것이 하나도 없으면 그 막대기는 맨 위 막대기다.
가장 마지막에 던진 막대기는 항상 맨 위에 있다. 맨 위에 있는 모든 막대기를 찾아라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 케이스의 첫 줄에는 막대기의 개수 이 주어진다. 이어지는 개의 줄에는 각각 네 개의 실수 가 주어지며, 이는 막대기 하나의 두 끝점의 평면 좌표이다. 막대기는 스탠이 던진 순서대로 나열되어 있다. 맨 위에 있는 막대기는 개를 넘지 않는다고 가정해도 된다.
입력은 인 케이스로 끝나며, 이 케이스는 처리하지 않는다.
출력
각 테스트 케이스마다, 맨 위에 있는 막대기들을 던진 순서대로 한 줄에 출력한다. 출력 형식은 다음과 같다.
Top sticks: a, b, c.
즉, Top sticks: 뒤에 맨 위 막대기의 번호를 던진 순서대로 , (쉼표와 공백)로 구분해 나열하고, 줄 끝에 마침표 .를 붙인다. 막대기는 입력에 주어진 순서대로 번으로 번호가 매겨진다.