andmej / acm

My solutions for problems from the UVa Online Judge (Valladolid).

This URL has Read+Write access

acm / 10137 - The Trip / p10137.dpr
100755 71 lines (64 sloc) 1.542 kb
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
program p10137;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Math;
 
function isInt(d : double) : boolean;
begin
result := (floor(d) = d);
end;
 
procedure printFloat(d : double);
var
  ReplaceFlags : TReplaceFlags;
begin
  writeln(StringReplace(format('$%f', [d]), ',', '.' ReplaceFlags));
  //writeln(StringReplace(formatFloat('$#0.00', d), ',', '.', ReplaceFlags));
end;
 
var
  s : Array[0..1001] of double;
  n, i : integer;
  promedio, mas, menos : double;
  redondee : boolean;
  ReplaceFlags : TReplaceFlags;
 
begin
  //reset(input, 'inside.txt');
  //reset(output, 'outside.txt');
  read(n);
  while n <> 0 do
    begin
    promedio := 0;
    mas := 0;
    menos := 0;
    for i:=0 to n-1 do
      begin
      read(s[i]);
      promedio := promedio + s[i];
      end;
    promedio := promedio / n;
    if (isInt(promedio * 100)) then
      redondee := false
    else
      begin
      redondee := true;
      promedio := floor(promedio * 100) / 100;
      end;
    //printFloat(promedio); writeLn('(Redondeado hacia abajo)');
    for i:=0 to n-1 do
      begin
      if s[i] < promedio then
        menos := menos + abs(s[i] - promedio)
      else
        if s[i] > promedio then
          begin
          if redondee then
            mas := mas + abs(s[i] - (promedio + 0.01))
          else
            mas := mas + abs(s[i] - promedio);
          end;
      end;
    if mas > menos then
      printFloat(mas)
    else
      printFloat(menos);
    read(n);
    end;
end.