結果
| 問題 |
No.61 リベリオン
|
| コンテスト | |
| ユーザー |
kyuridenamida
|
| 提出日時 | 2016-02-18 02:53:03 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,660 bytes |
| コンパイル時間 | 1,209 ms |
| コンパイル使用メモリ | 159,492 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-22 07:45:55 |
| 合計ジャッジ時間 | 7,522 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 2 WA * 2 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int (i) = 0 ; (i) < (int)(n) ; (i)++)
#define REP(i,a,b) for(int (i) = a ; (int)(i) <= (int)(b) ; (i)++)
#define all(n) (n).begin(),(n).end()
typedef long long ll;
typedef vector<int> Vi;
typedef vector<Vi> VVi;
typedef pair<long long,long long> Pii;
typedef vector<Pii> VPii;
typedef complex<double> P;
int canDiv(int a,int b){
if( b == 0 ) return a == 0;
else return 1. * a / b >= 0;
}
int main(){
int Q;
cin >> Q;
while(Q--){
int W,H,D,Mx,My,Hx,Hy,Vx,Vy;
cin >> W >> H >> D >> Hx >> Hy >> Mx >> My >> Vx >> Vy;
for(int i = -50 ; i < 50 ; i++){
for(int j = -50 ; j < 50 ; j++){
int ox = j * W;
int oy = i * H;
// int mx = j % 2 ? W - Mx;
// int my = i % 2 ? H - My;
int hx = (j % 2 ? W - Hx : Hx)+ox;
int hy = (i % 2 ? H - Hy : Hy)+oy;
// cout << (hx - Mx) % Vx << " " << (hy - My) % Vy << endl;
// if(canDiv(hy-My,Vy)) cout << "OK" << canDiv(hx-Mx,Vx) << " " << canDiv(hy-My,Vy) << "|" << hy-My << "|" << i << " " << j << endl;
P I = P(hx,hy) - P(Mx,My);
P V(Vx,Vy);
if( abs(I)/abs(V) > D + 1e-4 ) continue;
P IE = I / abs(I);
P VE = V / abs(V);
// cout << (I*conj(V)).imag() << endl;
if( abs(IE-VE) <= 1e-9 ){
// cout << abs(I)/abs(V) << "|" << D << " " << i << "|" << I << endl;
// cout << I << "(" << P(hx,hy) << "(((" << i << " " << j << ")))" << "|||" << P(Mx,My) << "||||" << V << "|" << abs(I)/abs(V) << endl;
// cout << VE << " " << IE << "|" << abs(I)/abs(V) << "|" << D << endl;
cout << "Hit" << endl;
goto exit;
}
}
}
cout << "Miss" << endl;
exit:;
}
}
kyuridenamida