program grz;
type
tab = array[1..1000000] of Qword;
tab1 = array[1..1000000] of longword;
var
n: longword;
a : array[1..1000000] of longword;
a1 : array[1..1000000] of longword;
b: array[1..1000000] of Qword;
b1: array[1..1000000] of Qword;
m: Qword;
i,j,k: longword;
t : text;
procedure qsort(var t:tab; var t1:tab1; l,r:longword);
var
p,tmp : Qword;
i,j : longword;
begin
i:=l; j:=r;
tmp:=(l+r) div 2;
p:=t[tmp]; //element dzielacy;
repeat
while t[i]<p do i:=i+1;
while p<t[j] do j:=j-1;
if i<=j then
begin
tmp:=t[i]; t[i]:=t[j]; t[j]:=tmp;
tmp:=t1[i]; t1[i]:=t1[j]; t1[j]:=tmp;
i:=i+1; j:=j-1
end
until i>=j;
if l<j then qsort(t,t1,l,j);
if i<r then qsort(t,t1,i,r)
end;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
readln(b[i]);
end;
qsort(b,a,1,n);
writeln(b[n]);
for i:=2 to n do
begin
for j:=1 to n do
begin
a1[j]:=a[j];
b1[j]:=b[j]+a[j]*(i-1);
end;
m:=0;
for j:=i downto 1 do
begin
qsort(b1,a1,1,n);
m:=m+b1[n];
if j>1 then
begin
for k:=1 to n-1 do
b1[k]:=b1[k]-a1[k];
b1[n]:=0; a1[n]:=0;
end;
end;
writeln(m);
end;
end.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | program grz; type tab = array[1..1000000] of Qword; tab1 = array[1..1000000] of longword; var n: longword; a : array[1..1000000] of longword; a1 : array[1..1000000] of longword; b: array[1..1000000] of Qword; b1: array[1..1000000] of Qword; m: Qword; i,j,k: longword; t : text; procedure qsort(var t:tab; var t1:tab1; l,r:longword); var p,tmp : Qword; i,j : longword; begin i:=l; j:=r; tmp:=(l+r) div 2; p:=t[tmp]; //element dzielacy; repeat while t[i]<p do i:=i+1; while p<t[j] do j:=j-1; if i<=j then begin tmp:=t[i]; t[i]:=t[j]; t[j]:=tmp; tmp:=t1[i]; t1[i]:=t1[j]; t1[j]:=tmp; i:=i+1; j:=j-1 end until i>=j; if l<j then qsort(t,t1,l,j); if i<r then qsort(t,t1,i,r) end; begin readln(n); for i:=1 to n do begin read(a[i]); readln(b[i]); end; qsort(b,a,1,n); writeln(b[n]); for i:=2 to n do begin for j:=1 to n do begin a1[j]:=a[j]; b1[j]:=b[j]+a[j]*(i-1); end; m:=0; for j:=i downto 1 do begin qsort(b1,a1,1,n); m:=m+b1[n]; if j>1 then begin for k:=1 to n-1 do b1[k]:=b1[k]-a1[k]; b1[n]:=0; a1[n]:=0; end; end; writeln(m); end; end. |
English