|
|
back to boardCommon BoardWhy I get WA? Pelase, help me!!!!!!! Problem 1078. There is my code: Program t1078; Const MaxN=501; Type Seg=record l,r,Pred,Cur,Num :integer end; Var N,i,j :integer; L :array[1..MaxN]of Seg; Way :array[1..MaxN]of integer; Pred,C :integer; Max,Mi :integer; begin Read(N); for i:=1 to N do read(l[i].l,l[i].r); for i:=1 to N do l[i].num:=i; for i:=1 to N do if l[i].l>l[i].r then begin j:=l[i].l; l[i].l:=l[i].r; l[i].r:=j; end; for i:=1 to MaxN do l[i].Pred:=0; for i:=1 to MaxN do l[i].Cur:=1; for i:=1 to N-1 do for j:=i+1 to N do if l[i].l>l[j].l then begin l[MaxN]:=l[i]; l[i]:=l[j]; l[j]:=l[MaxN]; end else if (l[i].l=l[j].l)and(l[i].r<l[j].r) then begin l[MaxN]:=l[i]; l[i]:=l[j]; l[j]:=l[MaxN]; end; l[1].Pred:=0; for i:=2 to N do begin max:=1; mi:=0; for j:=1 to N do if l[j].l<=l[i].l then if l[j].r>=l[i].r then if (l[j].l<l[i].l)or(l[j].r>l[i].r) then if l[j].cur+1>max then begin max:=l[j].cur+1; mi:=j; end; l[i].cur:=max; l[i].pred:=mi; end; Max:=0; for i:=1 to N do if l[i].cur>max then begin max:=l[i].cur; mi:=i; end; pred:=mi; c:=1; while pred<>0 do begin Way[c]:=l[pred].num; c:=c+1; pred:=l[pred].pred; end; Writeln(max); for i:=1 to max do write(way[i],' ');writeln; end. You can email to "hyz12345678@163.com". > There is my code: > > Program t1078; > > Const MaxN=501; > > Type Seg=record l,r,Pred,Cur,Num :integer end; > > Var N,i,j :integer; > L :array[1..MaxN]of Seg; > Way :array[1..MaxN]of integer; > Pred,C :integer; > Max,Mi :integer; > > begin > Read(N); > for i:=1 to N do read(l[i].l,l[i].r); > for i:=1 to N do l[i].num:=i; > for i:=1 to N do > if l[i].l>l[i].r then begin > j:=l[i].l; > l[i].l:=l[i].r; > l[i].r:=j; > end; > for i:=1 to MaxN do l[i].Pred:=0; > for i:=1 to MaxN do l[i].Cur:=1; > for i:=1 to N-1 do > for j:=i+1 to N do > if l[i].l>l[j].l then begin > l[MaxN]:=l[i]; > l[i]:=l[j]; > l[j]:=l[MaxN]; > end else > if (l[i].l=l[j].l)and(l[i].r<l[j].r) then begin > l[MaxN]:=l[i]; > l[i]:=l[j]; > l[j]:=l[MaxN]; > end; > l[1].Pred:=0; > for i:=2 to N do begin > max:=1; > mi:=0; > for j:=1 to N do > if l[j].l<=l[i].l then > if l[j].r>=l[i].r then > if (l[j].l<l[i].l)or(l[j].r>l[i].r) then > if l[j].cur+1>max then begin > max:=l[j].cur+1; > mi:=j; > end; > l[i].cur:=max; > l[i].pred:=mi; > end; > Max:=0; > for i:=1 to N do > if l[i].cur>max then begin > max:=l[i].cur; > mi:=i; > end; > pred:=mi; > c:=1; > while pred<>0 do begin > Way[c]:=l[pred].num; > c:=c+1; > pred:=l[pred].pred; > end; > Writeln(max); > for i:=1 to max do write(way[i],' ');writeln; > end. |
|
|