var f : text; nn,k,i,p : integer; com, s, q : string; x, y : real; procedure add(c : string; n : real); begin if c='W' then begin x := x - n; exit end; if c='NW' then begin x := x - n/sqrt(2); y := y + n/sqrt(2); exit; end; if c='N' then begin y := y + n; exit; end; if c='NE' then begin x := x + n/sqrt(2); y := y + n/sqrt(2); exit; end; if c='E' then begin x := x + n; exit; end; if c='SE' then begin x := x + n/sqrt(2); y := y - n/sqrt(2); exit; end; if c='S' then begin y := y - n; exit; end; if c='SW' then begin x := x - n/sqrt(2); y := y - n/sqrt(2); exit; end; end; begin assign(f, 'treasure.in'); reset(f); ReadLn(f,s); k := 0; while (s<>'END') do begin x := 0; y := 0; while s<>'' do begin p := pos(',', s); if p<>0 then begin q:=copy(s,1,p-1); delete(s,1,p); end else begin q:=copy(s,1,length(s)-1); delete(s,1,length(s)); end; com := ''; i := length(q); while q[i] in ['N','E','S','W'] do dec(i); com := copy(q,i+1,length(q)-i); delete(q,i+1,length(q)-i); val(q,nn,i); add(com,nn) end; inc(k); writeln('Карта #',k); writeln('Координаты сокровища (',x:0:3,',',y:0:3,').'); ReadLn(f,s); if s<>'END' then begin writeln('Расстояние до сокровища ',sqrt(x*x+y*y):0:3,'.'); writeln; end else write('Расстояние до сокровища ',sqrt(x*x+y*y):0:3,'.'); end; close(f); end.