Посылаю еще раз, вчера были глюки, не прислалось
Код
program workplan;
{$APPTYPE CONSOLE}
uses
SysUtils;
const inf = 1000000; //infinity
type TVect = array[1..100] of Integer;
TPlan = array[-1..100,1..100] of Integer;
var works : TVect;
plan : TPlan;
n, m, i : integer; //n days, m works
k,c, avail:integer; //avail works left
function argmin: integer;
var i, min, nmin: integer;
begin min:=inf;
for i:=1 to n do
if plan[-1, i] < min then
begin min:=plan[-1, i]; nmin:=i end;
Result:=nmin;
end;
procedure swap(var a, b: integer);
var c: integer;
begin
c:=a; a:=b; b:=c
end;
procedure sort(var a: TVect; n: integer);
var i, j: integer;
begin
for i:=1 to n do
for j:=n downto i do
if a[i] > a[j] then swap(a[i], a[j]);
end;
procedure input;
var i: integer;
begin
WriteLn('Input number of days > ');
ReadLn(n);
WriteLn('Input number of works > ');
ReadLn(m);
for i:=1 to m do
begin
Write('Input cost for work # ',i,' > ');
ReadLn(works[i])
end;
end;
procedure output;
var i, j: integer;
begin
WriteLn('-------------------------');
for i:=1 to n do
begin
for j:=1 to plan[0, i] do write(plan[j, i], ' ');
writeLn('Total: ', plan[-1, i])
end;
end;
begin
input; avail:=m;
sort(works, m);
fillchar(plan, sizeof(plan), 0);
for i:=1 to m do
begin
k:=argmin;
c:=works[avail];
inc(plan[-1, k],c);
inc(plan[0, k]);
plan[plan[0,k], k]:=c;
dec(avail)
end;
output;
Readln;
end.
ЗЫ Сдавалась в ПетрГУ, Комбинаторные алгоритмы, Касьянову, на этой неделе.
(просто есть подозрение, что эта прога пойдет туда же
)