双向链表-数组模拟

陈子骏

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]); } ```