#include<bits/stdc++.h>
using namespace std;
int n,m;
int l,r,x;
int ne[300005];
int win[300005];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
ne[i]=i+1;
}
while(m--){
scanf("%d%d%d",&l,&r,&x);
ne[l-1]=x;
for(int i=l;i<=r;){
if(win[i]){
i=ne[i];
continue;
}
if(i!=x) win[i]=x;
int t=i;
i=ne[i];
if(t<x) ne[t]=x;
else if(t>=x) ne[t]=r+1;
}
}
for(int i=1;i<=n;i++){
printf("%d ",win[i]);
}
return 0;
}
主体思路是直接跳过淘汰的骑士遍历赋值即可
时间复杂度应该是 O(n)
但是不清楚为什么 TLE 了