結果
| 問題 | 
                            No.202 1円玉投げ
                             | 
                    
| コンテスト | |
| ユーザー | 
                             kakira9618
                         | 
                    
| 提出日時 | 2015-05-04 00:50:24 | 
| 言語 | C++11(廃止可能性あり)  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 83 ms / 5,000 ms | 
| コード長 | 1,615 bytes | 
| コンパイル時間 | 1,027 ms | 
| コンパイル使用メモリ | 93,680 KB | 
| 実行使用メモリ | 6,656 KB | 
| 最終ジャッジ日時 | 2024-12-22 07:53:35 | 
| 合計ジャッジ時間 | 3,845 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 38 | 
ソースコード
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cctype>
#include <climits>
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <list>
#include <queue>
#include <deque>
#include <algorithm>
#include <numeric>
#include <utility>
#include <complex>
#include <memory>
#include <functional>
 
using namespace std;
struct coin{
    int id;
    int x;
    int y;
};
bool check(coin &a, coin &b) {
    int dx = a.x - b.x;
    int dy = a.y - b.y;
    return (dx * dx + dy * dy) < 400;
}
bool dame(int x, int y) {
    return x < 0 || x >= 201 || y < 0 || y >= 201;
}
int main(int argc, char const *argv[]) {
    int N;
    cin >> N;
    vector<coin> coins[201][201];
    std::vector<int> flag(N, 0);
    for (int i = 0; i < N; i++) {
        int x, y;
        cin >> x >> y;
        int px = x / 100;
        int py = y / 100;
        coin tgt = (coin){i, x, y};
        bool flag = false;
        for (int i = -1 ; i <= 1; i++) {
            for (int j = -1 ; j <= 1; j++) {
                if (dame(px + i, py + j)) continue;
                for (int k = 0; k < coins[px + i][py + j].size(); k++) {
                    if (check(coins[px + i][py + j][k], tgt)) {
                        flag = true;
                    }
                }
            }
        }
        if (!flag) {
            coins[px][py].push_back(tgt);
        }
    }
    int ans = 0;
    for (int i = 0; i < 201; i++) {
        for (int j = 0; j < 201; j++) {
            ans += coins[i][j].size();
        }
    }
    cout << ans << endl;
    
    return 0;
}
            
            
            
        
            
kakira9618