結果
問題 | No.94 圏外です。(EASY) |
ユーザー | TatsuyaOba |
提出日時 | 2016-12-18 16:10:16 |
言語 | C++11 (gcc 11.4.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,041 bytes |
コンパイル時間 | 774 ms |
コンパイル使用メモリ | 60,252 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-14 08:25:56 |
合計ジャッジ時間 | 1,467 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | AC | 4 ms
5,248 KB |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | AC | 2 ms
5,248 KB |
ソースコード
#include <iostream> #include <cmath> using namespace std; bool check[1000]; int Xs[1000], Ys[1000]; int N; class Pos { public: int x; int y; Pos(int x, int y) { this->x = x; this->y = y; } int distance(Pos pos) { return (x - pos.x) * (x - pos.x) + (y - pos.y) * (y - pos.y); } }; void foo(int index, Pos now, Pos &pos1, Pos &pos2, Pos &pos3, Pos &pos4) { for (int i = 0; i < N; i++) { if (check[i]) { continue; } int x = Xs[i]; int y = Ys[i]; int distance = (x - now.x) * (x - now.x) + (y - now.y) * (y - now.y); if (distance <= 100) { check[i] = true; if(pos1.x > x && pos1.y > y) { pos1.x = x; pos1.y = y; } if(pos2.x > x && pos2.y < y) { pos2.x = x; pos2.y = y; } if(pos3.x < x && pos3.y > y) { pos3.x = x; pos3.y = y; } if(pos4.x < x && pos4.y < y) { pos4.x = x; pos4.y = y; } foo(i, Pos(x, y), pos1, pos2, pos3, pos4); } } } int main() { cin >> N; for (int i = 0; i < N; i++) { check[i] = false; } int ans = 0; for (int i = 0; i < N; i++) { cin >> Xs[i] >> Ys[i]; } for (int i = 0; i < N; i++) { if (check[i]) { continue; } Pos pos1 = Pos(Xs[i], Ys[i]); Pos pos2 = Pos(Xs[i], Ys[i]); Pos pos3 = Pos(Xs[i], Ys[i]); Pos pos4 = Pos(Xs[i], Ys[i]); foo(i, Pos(Xs[i], Ys[i]), pos1, pos2, pos3, pos4); int a[] = {ans, pos1.distance(pos2), pos1.distance(pos3), pos1.distance(pos4), pos2.distance(pos3), pos2.distance(pos4), pos3.distance(pos4)}; int tmp = 0; for (auto b : a) { if (b > tmp) { tmp = b; } } ans = tmp; } cout << sqrt(ans) + 2 << endl; return 0; }