№1020
http://acm.timus.ru/problem.aspx?space=1&num=1020
ЖМИ ДАЛЕЕ>>>
РЕШЕНИЕ:
PASCAL
Var N,I,J,S: LongInt;
R,L: Real;
X,Y,Ang: Array[0..101] of Real;
Procedure ReChang(var A,B: Real);
Var V: Real;
Begin
V:=A;
A:=B;
B:=V;
End;
Begin
Readln(N,R);
L:=2*Pi*R;
S:=1;
For I:=1 to n do begin
Readln(X[I],Y[I]);
If (I<>1) and (X[I]<X[S]) then S:=I;
End;
X[0]:=X[S];
Y[0]:=Y[S];
ReChang(X[S],X[N]);
ReChang(Y[S],Y[N]);
ReChang(Ang[S],Ang[N]);
For I:=1 to n do
If X[I]-X[N]<>0 then Ang[I]:=(Y[I]-Y[N])/(X[I]-X[N])
else if Y[I]<Y[N] then Ang[I]:=-65000
else Ang[I]:=+65000;
For I:=1 to N do
For J:=2 to N do
If Ang[J-1]>Ang[J] then begin
ReChang(Ang[J-1],Ang[J]);
ReChang(X[J-1],X[J]);
ReChang(Y[J-1],Y[J]);
End;
For I:=1 to N do
L:=L+Sqrt(Sqr(X[I]-X[I-1])+Sqr(Y[I]-Y[I-1]));
Writeln(L:0:2);
End.
1020. Ниточка
Ограничение времени: 1.0 секунды
Ограничение памяти: 16 МБ
Ограничение памяти: 16 МБ
Злоумышленники варварски вбили в ни в чем не повинную плоскую поверхность N гвоздей, да так, что только шляпки остались. Мало того, они в своих подлых целях вбили все гвозди в вершины выпуклого многоугольника. После этого они… страшно сказать… они натянули ниточку вокруг всех гвоздей, так, что поверхности стало совсем больно! Вот как примерно они это сделали:
Ваша задача — определить длину этой ниточки.
Исходные данные
В первой строке входа к этой задаче находятся два числа — количество гвоздей N, 1 ≤ N ≤ 100, и вещественное число R — радиус шляпок гвоздей. Все шляпки имеют одинаковый радиус. Далее на входе располагаются еще Nстрок, в каждой из которых записана через пробел пара вещественных координат центра очередного гвоздя; координаты не превосходят по абсолютной величине числа 100. Описания гвоздей приводятся в порядке обхода вершин многоугольника (либо по часовой стрелке, либо против часовой стрелки), начиная с произвольного. Шляпки разных гвоздей не соприкасаются.
Результат
Выведите вещественное число, округлённое до двух знаков после запятой — длину ниточки, натянутой вокруг всех гвоздей.
Пример
исходные данные | результат |
---|---|
4 1 0.0 0.0 2.0 0.0 2.0 2.0 0.0 2.0 | 14.28 |
Автор задачи: Александр Петров & Никита Шамгунов
Источник задачи: Второе командное соревнование школьников Свердловской области по программированию, 7 октября 2000
Источник задачи: Второе командное соревнование школьников Свердловской области по программированию, 7 октября 2000