ENG  RUS Timus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

## Discussion of Problem 1184. Cable Master

please see it? It got WA.
Posted by zealot 19 Nov 2002 19:33
my solution:

{\$N+}
program cable_master;
const max=10000;
var a:array[1..max] of real;
n,k,s:integer;
best,f,r,m:extended;
procedure readdata;
var i:integer;
begin
readln(n,k);
for i:=1 to n do
begin
readln(a[i]);
if a[i]>r then r:=a[i];
end;
end;
function find:boolean;
var i:integer;
begin
s:=0;
for i:=1 to n do
s:=s+trunc(a[i]/m);
if s=k then find:=true
else find:=false;
end;
procedure main;
begin
while r>=f do
begin
m:=(f+r)/2;
if not find then
begin
if s>k then f:=f+0.001
else r:=m;
if abs(r-f)<0.00001 then break;
end
else
begin
if m>best then best:=m;
if f=r then break;
f:=f+0.001;
end;
end;
best:=trunc(best*100);
best:=best/100;
writeln(best:0:2);
end;
BEGIN
readdata;
main;
END.
Re: please see it? It got WA.
Posted by zealot 19 Nov 2002 19:35
give some texts please.
It seemd that it must got AC
Posted by I am david. Tabo. 19 Nov 2002 21:43
> give some texts please.
Here is AC. Can you help me anather programs on webboard
Posted by I am david. Tabo. 19 Nov 2002 21:46
const    max    = 10000;

var      a                :array[1..max] of longint;

n,k              :word;

dau,cuoi,giua,
kq               :longint;

ok               :boolean;

procedure nhap;
var    i       :word;
x       :real;
begin
readln( n, k);

for i := 1 to n do
begin  readln( x);
a[i] := round( x * 100);
end;
end;

procedure cut;
var    doan     :longint;
i        :word;
begin
doan := 0;
for i := 1 to n do
begin
doan := doan + a[i] div giua ;
if doan >= k then break;
end;

ok :=  ( doan >= k );
if ok and ( giua > kq ) then kq := giua;
end;

procedure solve;
begin
dau := 1; cuoi := 10000000; kq := 0;

repeat
giua := ( dau + cuoi ) div 2;

cut;

if ok then dau  := giua + 1
else cuoi := giua - 1;
until dau > cuoi;
end;

procedure out;
var     x     :real;
begin
x := kq;
x := x / 100;
writeln(x :0 :2);
end;

begin
nhap;
solve;
out;
end.
It was my friends. But here is my. very little
Posted by I am david. Tabo. 19 Nov 2002 21:49
uses math;
const p=3.1415926535897;
var a,r:integer;
s,angl,cosa:real;
begin
readln (a,r);
if (2*r<=a) then
s:=p*r*r
else
if (sqrt(2)*a/2<r) then
s:=a*a
else
begin
cosa:=a/(2*r);
angl:=2*arccos(cosa);
angl:=p/2-angl;
s:=((a/2)*sqrt(r*r-(a*a)/4))+angl*r*r/2;
s := s * 4;
end;
writeln (s:0:3);
end.
Something is strange!!Help!
Posted by Tony 12 May 2003 18:56
My program is like yours.
But if i use a[i] := trunc( x * 100),it's WA.
And if i use a[i] := round( x * 100),it will be AC.
Is there something different from the two ways in this problem?
Isn't the input with exactly two digits after a decimal point?
It's floating error.
Posted by Maigo Akisame (maigoakisame@yahoo.com.cn) 16 Jul 2004 19:05