結果
問題 |
No.202 1円玉投げ
|
ユーザー |
|
提出日時 | 2016-08-20 15:15:02 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 648 ms / 5,000 ms |
コード長 | 1,417 bytes |
コンパイル時間 | 1,944 ms |
コンパイル使用メモリ | 170,580 KB |
実行使用メモリ | 53,024 KB |
最終ジャッジ日時 | 2024-12-22 10:27:50 |
合計ジャッジ時間 | 11,857 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
#include "bits/stdc++.h" using namespace std; #define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i)) #define rep(i,j) FOR(i,0,j) #define each(x,y) for(auto &(x):(y)) #define mp make_pair #define all(x) (x).begin(),(x).end() #define debug(x) cout<<#x<<": "<<(x)<<endl #define smax(x,y) (x)=max((x),(y)) #define smin(x,y) (x)=min((x),(y)) #define MEM(x,y) memset((x),(y),sizeof (x)) #define sz(x) (int)(x).size() typedef long long ll; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<ll> vll; int N; vi X, Y; vi dx, dy; void solve(){ bitset<20001 * 20001> xy; rep(i, N){ bool ok = true; rep(j, sz(dx)){ int x = X[i] + dx[j]; int y = Y[i] + dy[j]; if(x >= 0 && x <= 20000 && y >= 0 && y <= 20000){ int k = x * 20001 + y; if(xy[k]){ ok = false; break; } } } if(ok){ int k = X[i] * 20001 + Y[i]; xy[k] = 1; } } cout << xy.count() << endl; } int main(){ for(int i = -19; i < 20; ++i){ for(int j = -19; j < 20; ++j){ if(i*i+j*j < 400){ dx.push_back(i); dy.push_back(j); } } } while(cin >> N){ X.resize(N); Y.resize(N); rep(i, N)scanf("%d%d", &X[i], &Y[i]); solve(); } }