Pagini recente » Cod sursa (job #2092402) | Cod sursa (job #2460454) | Cod sursa (job #584363) | Cod sursa (job #768468) | Cod sursa (job #253978)
Cod sursa(job #253978)
var j,etmax,Ana,tpos,k,h,tf,n,m,i,a,lung:longint;
f,f2:text;
c,c2:array[1..200000] of longint;
cmax,cf:int64;
gasit:boolean;
procedure QuickSort(l,r: integer);
var
i,j,x,y: integer;
begin
i:=l; j:=r; x:=c[(l+r) DIV 2];
repeat
while c[i]<x do i:=i+1;
while x<c[j] do j:=j-1;
if i<=j then
begin
y:=c[i]; c[i]:=c[j]; c[j]:=y;
i:=i+1; j:=j-1;
end;
until i>j;
if l<j then QuickSort(l,j);
if i<r then QuickSort(i,r);
end;
procedure QuickSort2(l,r: integer);
var
i,j,x,y: integer;
begin
i:=l; j:=r; x:=c2[(l+r) DIV 2];
repeat
while c2[i]<x do i:=i+1;
while x<c2[j] do j:=j-1;
if i<=j then
begin
y:=c2[i]; c2[i]:=c2[j]; c2[j]:=y;
i:=i+1; j:=j-1;
end;
until i>j;
if l<j then QuickSort2(l,j);
if i<r then QuickSort2(i,r);
end;
begin
assign(f,'caramizi.in');
assign(f2,'caramizi.out');
reset(f);
rewrite(f2);
readln(f,n,m);
for i:=1 to n do
begin
read(f,c[i]);
end;
Quicksort(1,n);
cmax:=0;
i:=1;
while i<=m do
begin
read(f,a);
cmax:=0;
for h:=n downto 1 do
begin
for j:=1 to n do c2[j]:=c[j];
tf:=0;
lung:=n;
while lung>=h do
begin
tf:=tf+c2[lung-h+1];
for j:=lung-h+2 to lung do
begin
c2[j]:=c2[j]-c2[lung-h+1];
end;
c2[lung-h+1]:=0;
while (c2[lung-h+1]=0) and (lung>=h) do
begin
for k:=lung-h+1 to lung do
begin
c2[k]:=c2[k+1];
end;
lung:=lung-1;
end;
Quicksort2(1,lung);
end;
if tf>=a then
begin
cf:=a*h;
cmax:=cf;
break;
end
else
begin
cf:=tf*h;
if cf>cmax then cmax:=cf;
end;
end;
writeln(f2,cmax);
i:=i+1;
end;
close(f);
close(f2);
end.