5 条回复
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; import java.util.Stack; public class tt { public static void main(String[] args) { Scanner in=new Scanner(System.in); List<Point> point=new ArrayList<>(); Stack<Point> stack=new Stack<>(); int n=in.nextInt(); for(int i=0;i<n;i++) { point.add(new Point(in.nextInt(), in.nextInt())); } //按纵坐标从小到大排序 Collections.sort(point); //维护一个从栈底到栈顶递减的单调栈 for(int i=0;i<n;i++) { while (!stack.isEmpty()&&stack.peek().x<point.get(i).x) { stack.pop(); } stack.push(point.get(i)); } while (!stack.isEmpty()) { Point temp=stack.pop(); System.out.println(temp.x+" "+temp.y); } } } class Point implements Comparable<Point>{ public int x; public int y; public Point(int x,int y) { this.x=x; this.y=y; } public int compareTo(Point o) { return this.y-o.y; } }
添加回复