1 solutions

  • 0
    @ 2025-11-5 15:31:10

    Pascal :

    var n,i,j,k,min,mid,max:word;
        a:array[1..10000]of longint;
        p,temp:longint;
    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 inc(i);
        while x<a[j] do dec(j);
        if i<=j then
          begin
            y:=a[i];
            a[i]:=a[j];
            a[j]:=y;
            inc(i);dec(j);
          end;
      until i>j;
      if l<j then sort(l,j);
      if i<r then sort(i,r);
    end;
    begin
      readln(input,n);
      for i:=1 to n do read(input,a[i]);
      sort(1,n);
      p:=0;
      for i:=1 to n-2 do
        begin
          inc(a[i+1],a[i]);
          inc(p,a[i+1]);
          min:=i+2;max:=n;
          while min<=max do
            begin
              mid:=(min+max) div 2;
              if a[mid]=a[i+1] then begin j:=mid;break;end;
              if a[mid]<a[i+1] then min:=mid+1 else max:=mid-1;
            end;
          if min>max then j:=min;
          temp:=a[i+1];
          for k:=i+1 to j-2 do a[k]:=a[k+1];
          a[j-1]:=temp;
        end;
      p:=p+a[n]+a[n-1];
      write(output,p);
    end.
    
    • 1

    Information

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