language: Pascal (fpc) (fpc 2.2.0)
date: 97 days 13 hours ago
link:
visibility: public
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
program Simpleks;
{$APPTYPE CONSOLE}
const n=4;m=6;
type mass=array[1..n,1..m] of real;
var  k:mass;tr,i,b:integer; f1:text;
procedure vvod(var mas:mass);
var i,j:integer;
 begin
  for i:=1 to n do
    for j:=1 to m do
    read(f1, mas[i,j]);
end;
procedure vuvod(const mas:mass);
var i,j:integer;
 begin
  for i:=1 to n do begin
    for j:=1 to m do
    write(mas[i,j]:3:3,' ');
  writeln;
  end;
  writeln;
  writeln;
end;
 function raz_stl(const mas:mass):byte; {stolbec}
 var min:real;i,j,x:byte;
  begin
   min:=0;
    for i:=1 to n do  begin
      for j:=1 to m do
        if mas[i,j]<min then begin min:=mas[i,j]; x:=j;  end;
        raz_stl:=x;
     end;
end;
function raz_str(const mas:mass):byte;     {stroka}
var x,i,y:byte; min:real;
begin
  x:=raz_stl(mas);
  i:=0;
  repeat
     inc(i);
      if (mas[i,x]>0) and (mas[i,m]>0) then
      begin min:=mas[i,m]/mas[i,x]; y:=i;end;
      until (i=n) or (y<>0);
        for i:=y to n do
      if mas[i,x]>0 then
        if min>(mas[i,m]/mas[i,x]) then
        begin min:=mas[i,m]/mas[i,x]; y:=i; end;
   raz_str:=y;
end;
 
procedure z1(var mas:mass);
var  x,y,i:byte;  z:real;
begin
   y:=raz_stl(mas);
   x:=raz_str(mas);
   z:=mas[x,y];
     for i:=1 to m do begin
      mas[x,i]:=mas[x,i]/z;
      end;
end;
 
procedure z2(var mas:mass);
var x,y,i,j:byte; z:real;
begin
   y:=raz_stl(mas);
   x:=raz_str(mas);
  for i:=1 to n do begin
   z:=mas[i,y];
    for j:=1 to m do  begin
      if i<>x then mas[i,j]:=mas[i,j]-(mas[x,j]*z);
        end;
      end;
end;
begin
assign(f1,'input.txt');
reset(f1);
vvod(k);
close(f1);
b:=0;
repeat
inc(b);
tr:=1;
z1(k);
z2(k);
for i:=1 to m do
if k[1,i]<0 then tr:=0;
vuvod(k);
until b=3;
writeln('x1=',k[3,6],'  x2=',k[4,6],'  max=',k[1,6]);
readln;
End.