|
|
back to boardI got WA! Why??? type list= array[1..500]of integer; var e,c,d,a,b: list; n,i,j,k,m: longint; procedure QuickSort(var A: List; Lo, Hi: Integer); procedure Sort(l, r: Integer); var i, j, x, y: integer; begin i := l; j := r; x := a[(l+r) DIV 2]; repeat while a[i] < x do i := i + 1; while x < a[j] do j := j - 1; if i <= j then begin y := a[i]; a[i] := a[j]; a[j] := y; y := b[i]; b[i] := b[j]; b[j] := y; y := e[i]; e[i] := e[j]; e[j] := y; i := i + 1; j := j - 1; end; until i > j; if l < j then Sort(l, j); if i < r then Sort(i, r); end; begin {QuickSort}; Sort(Lo,Hi); end; begin readln(n); for i:=1 to n do readln(a[i],b[i]); fillchar(c,sizeof(c),0); fillchar(d,sizeof(d),0); for i:=1 to n do e[i]:=i; quicksort(a,1,n); for i:=1 to n do begin k:=0; for j:=1 to i-1 do if (a[j]<a[i])and(b[j]>b[i])and(c[j]>k)then k:=j; if k<>0 then begin c[i]:=c[k]+1; d[i]:=k; end else begin c[i]:=1; d[i]:=0; end; end; k:=1; m:=1; for i:=1 to n do if c[i]>k then begin k:=i; m:=c[i]; end; writeln(m); m:=k; while m>0 do begin write(e[m],' '); m:=d[m]; end; end. |
|
|