双向链表-数组模拟

陈子骏

2018-04-09 17:40:08

Personal

#include<cstdio>
using namespace std;
int n,m;
int l,r,w,b[1000005],from[1000005],next[1000005];
int main(){
    freopen("contest.in","r",stdin);
    freopen("contest.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    from[i]=i-1,next[i]=i+1;
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&l,&r,&w);
        for(int j=l;j<=r&&j;j=next[j])
        {
            if(!b[j]&&j!=w){
                b[j]=w;
                from[next[j]]=from[j];
                next[from[j]]=next[j];
            }
        }
    } 
    for(int i=1;i<=n;i++)   printf("%d ",b[i]);
}