Cod sursa(job #109927)

Utilizator iulia_infoIulia Cosmin iulia_info Data 25 noiembrie 2007 12:56:55
Problema Aliens Scor 0
Compilator fpc Status done
Runda preONI 2008, Runda 1, Clasa a 10-a Marime 1.54 kb
program preONI2008;
type num=array [1..50] of longint;
var f,g:text;
		n,i:byte;
		x,y:num;
		z:array[1..50]of real;
		ps,pj:longint;

procedure maxim(var n:byte; var x,y:num);
var i,j,poz:byte;
		max:real;
begin
max:=z[1];
poz:=1;
for i:=1 to n do if z[i]<max then begin
																	max:=z[i];
																	poz:=i;
																	end;
ps:=ps div x[poz];
pj:=pj div y[poz];
for j:=poz to n  do begin
											 x[j]:=x[j+1];
											 y[j]:=y[j+1];
											 end;
n:=n-1;
end;

procedure maxim_mic(var n:byte);
var max:real;
		i,j,poz:byte;
		gasit:boolean;
begin
gasit:=false;
i:=1;
while ((i<=n) and not gasit) do
		begin
		if z[i]<1 then begin
										gasit:=true;
										max:=z[i];
										poz:=i;
										end;
		i:=i+1;
		end;
for j:=i-1 to n do if ((z[j]>max) and (z[j]<1)) then begin
																										max:=z[j];
																										poz:=j;
																										end;
ps:=ps*x[poz];
pj:=pj*y[poz];
for j:=poz to n  do begin
											 x[j]:=x[j+1];
											 y[j]:=y[j+1];
											 end;
n:=n-1;

end;

begin
assign (f,'aliens.in'); reset(f);
assign (g,'aliens.out'); rewrite(g);
read(f,n);
for i:=1 to n do readln (f,x[i], y[i]);
for i:=1 to n do z[i]:=x[i]/y[i];
ps:=1;
pj:=1;
for i:=1 to n do if z[i]>1 then begin
																ps:=ps*x[i];
																pj:=pj*y[i];
																end;
if (ps mod pj<>0) then
	while (ps mod pj<>0) do
		begin
		maxim(n,x,y);
		maxim_mic(n);
		end;

write(g,ps/pj:2:0);

close(f);
close(g);
end.