結果
問題 |
No.202 1円玉投げ
|
ユーザー |
|
提出日時 | 2015-05-04 01:01:18 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,181 bytes |
コンパイル時間 | 769 ms |
コンパイル使用メモリ | 60,152 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-12-22 08:02:26 |
合計ジャッジ時間 | 10,001 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 3 RE * 35 |
ソースコード
#include <iostream> #include <list> class Ichien { int x; int y; public: Ichien(int x, int y) : x(x), y(y) {}; bool kasanaru(Ichien *other) { int x_diff = this->x - other->x; int y_diff = this->y - other->y; return x_diff * x_diff + y_diff * y_diff < 400; } }; int main() { int n; int x, y; Ichien *ichi; std::list<Ichien *> list[21][21]; std::cin >> n; for (int i = 0; i < n; ++i) { std::cin >> x >> y; ichi = new Ichien(x, y); bool okeru = true; if (x % 100 < 10 || x % 100 > 90 || y % 100 < 10 || y % 100 > 90) { // 線上にあるやつを細かくするの面倒なった、 // これでもとおるんじゃね? for (auto &l: list) { for (auto &m: l) { for (auto other: m) { if (ichi->kasanaru(other)) { okeru = false; break; } } } } } else { for (auto other: list[x/100][y/100]) { if (ichi->kasanaru(other)) { okeru = false; break; } } } if (okeru) { list[x/100][y/100].push_back(ichi); } else { delete ichi; } } int sum = 0; for (auto &l: list) { for (auto &m: l) { sum += m.size(); } } std::cout << sum << std::endl; return 0; }