1 solutions

  • 0
    @ 2024-12-11 0:49:57

    Pascal :

    uses math;
    var
      i,j,n,t:longint;
    	a,h,f,s:array[0..100001]of longint;
    function find(l,r:longint):longint;
    var mid:longint;
    begin
    	while l<=r do begin
    		mid:=(l+r) shr 1;
    		if (a[mid]>h[i])and(a[mid-1]<=h[i]) then exit(mid) else if a[mid]<h[i] then l:=mid+1 else r:=mid-1;
    	end;
    	exit(l);
    end;
    procedure qsort(l,r:longint);
    var
      i,j,temp,mid:longint;
    begin
      i:=l; j:=r;
      mid:=a[(l+r) div 2];
      repeat
        while a[i]<mid do inc(i);
        while a[j]>mid do dec(j);
        if i<=j then
        begin
          temp:=a[i];a[i]:=a[j];a[j]:=temp;
          temp:=h[i];h[i]:=h[j];h[j]:=temp;
          inc(i);dec(j);
        end;
      until i>j;
      if l<j then qsort(l,j);
      if i<r then qsort(i,r);
    end;
    begin
      readln(n);
    	for i:=1 to n do readln(a[i],h[i]);
    	qsort(1,n);
    	t:=1;
    	fillchar(a,sizeof(a),0);
    	a[1]:=h[1];
    	for i:=2 to n do
    		if h[i]>a[t] then begin
    			inc(t);
    			a[t]:=h[i];
    		end
    		else a[find(1,t)]:=h[i];
    	writeln(t);
    end.
    
    • 1

    Information

    ID
    775
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By