import java.util.PriorityQueue;
import java.util.Scanner;
public class Main{
public static class Node implements Comparable<Node>{
int w,t,f;
public Node(int w, int t,int f) {
this.w = w;//号码
this.t = t;//时间
this.f = f;//标记 用 0 和 1 分别表示拿和放
}
@Override
public int compareTo(Node o) {
if(this.t<o.t) return -1;
if(this.t>o.t) return 1;//先按时间排序
if(this.f>o.f) return -1;
if(this.f<o.f) return 1;//再按拿-放排序
if(this.w<o.w) return -1;
if(this.w>o.w) return 1;//最后按号码排序
return 0;
}
}
static int N = 1010;
static int hp[] = new int[N];
static int ph[] = new int[N];
static PriorityQueue<Node> q = new PriorityQueue<>();
static PriorityQueue<Integer> room = new PriorityQueue<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
for(int i = 1; i <= n ; i++) hp[i] = i;
for(int i = 1; i <= n ; i++) ph[i] = i;
while(k-->0) {
int w = scanner.nextInt();
int s = scanner.nextInt();
int e = scanner.nextInt();
q.add(new Node(w,s,0));//分解成两个操作,加入优先级队列里
q.add(new Node(w,s+e,1));//一个拿操作,一个放操作
}
while(q.size()>0) {
Node h = q.poll();
if(h.f==0) {
room.add(hp[h.w]);
}else {
int p = room.poll();//第一个可以放的空间
hp[h.w] = p;//放进去
ph[p] = h.w;//添加映射
}
}
for(int i = 1; i <= n ; i++) System.out.print(ph[i]+" ");//打印映射
}
}
网友评论