package com.jiml.test;
import java.io.*;
import java.util.*;
class Node{
int l;
int r;
int index;
public Node(int l,int r,int index){
this.l = l;
this.r = r;
this.index = index;
}
@Override
public String toString() {
return "Node{" +
"l=" + l +
", r=" + r +
", index=" + index +
'}';
}
}
public class Main {
public static void main(String[] args) throws IOException {
PriorityQueue<Node> queue = new PriorityQueue<>(new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
return o1.l-o2.l;
}
});
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] str = reader.readLine().trim().split(" ");
int t = Integer.parseInt(str[0]);
for(int k=0;k<t;k++){
str = reader.readLine().trim().split(" ");
int n = Integer.parseInt(str[0]);
for(int l=0;l<n;l++){
str = reader.readLine().trim().split(" ");
queue.add(new Node(Integer.parseInt(str[0]),Integer.parseInt(str[1]),l));
}
int[] ans = new int[n];
// while(!queue.isEmpty()){
// System.out.println(queue.poll());
// }
int flag = 1;
int time= 0;
while(!queue.isEmpty()){
Node node = queue.poll();
if(flag==1){
flag ++;
time = node.l;
ans[node.index] = time;
time++;
}else{
if(node.l<=time&&time<=node.r){
ans[node.index] = time;
time++;
}else{
if(time<node.l){
time = node.l;
ans[node.index] = time;
time++;
}else{
ans[node.index] = 0;
}
}
}
}
for(int i=0;i<n;i++){
System.out.print(ans[i]+" ");
}
}
}
}
2021.4.9 阿里笔试 第一题
最新推荐文章于 2022-03-03 15:59:52 发布
本文提供了一个使用Java实现的例子,通过优先队列和缓冲读取器来处理输入数据。该程序首先从标准输入读取一系列带有整数范围的数据,并将这些数据放入一个按特定规则排序的优先队列中。然后,程序依次处理队列中的元素,根据条件更新一个全局的时间变量并记录每个节点的处理时间。
260

被折叠的 条评论
为什么被折叠?



