Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$APPTYPE CONSOLE}
- var
- i, n, m: integer;
- heap, a: array[1..100000] of integer;
- ans: int64;
- procedure Swap(var a, b: integer);
- var
- c: integer;
- begin
- c := a;
- a := b;
- b := c;
- end;
- procedure SiftUp(num: integer);
- begin
- if num = 1 then exit;
- if heap[num] > heap[num div 2] then begin
- Swap(heap[num], heap[num div 2]);
- SiftUp(num div 2);
- end;
- end;
- procedure Add(num: integer);
- begin
- heap[num] := a[num];
- SiftUp(num);
- end;
- procedure SiftDown(num: integer);
- var
- k: integer;
- begin
- if num * 2 > n then exit;
- if (num * 2) + 1 > n then
- k := num * 2
- else begin
- if heap[num * 2] < heap[(num * 2) + 1] then
- k := (num * 2) + 1 else k := num * 2;
- end;
- if heap[num] < heap[k] then begin
- Swap(heap[num], heap[k]);
- SiftDown(k);
- end;
- end;
- begin
- Reset(input, 'input.txt');
- Rewrite(output, 'output.txt');
- Read(n, m);
- ans := 0;
- For i := 1 to n do begin
- Read(a[i]);
- Add(i);
- ans := ans + a[i];
- end;
- For i := 1 to m do begin
- ans := ans - heap[1] + (heap[1] div 10);
- heap[1] := heap[1] div 10;
- SiftDown(1);
- end;
- Write(ans);
- end.
Add Comment
Please, Sign In to add comment