Submission #9040

#TimeUsernameProblemLanguageResultExecution timeMemory
9040dolpang2Wall construction (kriii2_WA)C++14
1 / 4
0 ms1220 KiB
#include <cstdio> #include <cmath> #include <vector> struct Point { int x; int y; }; int main() { std::vector<Point> bundle; int N; int R; scanf(" %d %d", &N, &R); for (int i = 0; i < N; ++i) { int x; int y; scanf(" %d %d", &x, &y); Point p; p.x = x; p.y = y; bundle.push_back(p); } if (N == 2) { double dis = sqrt((bundle[0].x - bundle[1].x) * (bundle[0].x - bundle[1].x) + (bundle[0].y - bundle[1].y) * (bundle[0].y - bundle[1].y)); printf("%lf", 2 * dis + 2 * 3.14159265359 * R); } else { // 1사분면 Point one = bundle[0]; Point two = bundle[0]; Point three = bundle[0]; Point four = bundle[0]; for (int i = 0; i < N; ++i) { if (bundle[i].x > one.x || bundle[i].y > one.y) { one = bundle[i]; } } for (int i = 0; i < N; ++i) { if (bundle[i].x < two.x || bundle[i].y > two.y) { two = bundle[i]; } } for (int i = 0; i < N; ++i) { if (bundle[i].x < three.x || bundle[i].y < three.y) { three = bundle[i]; } } for (int i = 0; i < N; ++i) { if (bundle[i].x > four.x || bundle[i].y < four.y) { four = bundle[i]; } } long double dis = sqrt((one.x - two.x) * (one.x - two.x) + (one.y - two.y) * (one.y - two.y)); dis += sqrt((three.x - two.x) * (three.x - two.x) + (three.y - two.y) * (three.y - two.y)); dis += sqrt((three.x - four.x) * (three.x - four.x) + (three.y - four.y) * (three.y - four.y)); dis += sqrt((one.x - four.x) * (one.x - four.x) + (one.y - four.y) * (one.y - four.y)); printf("%.12Lf", dis + 2 * 3.14159265359 * R); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...