結果
| 問題 |
No.61 リベリオン
|
| コンテスト | |
| ユーザー |
graythunder1
|
| 提出日時 | 2019-12-20 15:23:28 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,310 bytes |
| コンパイル時間 | 1,213 ms |
| コンパイル使用メモリ | 160,520 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-08 10:30:33 |
| 合計ジャッジ時間 | 1,732 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 1 |
| other | AC * 4 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<ll,ll> P;
#define repi(i,a,b) for(ll i=a;i<b;i++)
#define rep(i,a) repi(i,0,a)
#define rrep(i,a) for(ll i=a-1;i>=0;i--)
#define MOD 1000000007
//debug
#define debug(arr) cerr<<#arr<<"(l"<<__LINE__<<") : ";for(auto x:arr)cerr<<x<<" ";cerr<<endl;
ll gcd(ll a, ll b){
if(a < b) swap(a, b);
while(b){
ll tmp = a;
a = b;
b = tmp % b;
}
return a;
}
int main(){
ll Q;
cin >> Q;
bool ans[Q] = {};
rep(q, Q){
ll W, H, D, Mx, My, Hx, Hy, Vx, Vy;
cin >> W >> H >> D >> Mx >> My >> Hx >> Hy >> Vx >> Vy;
ll g = gcd(Vx, Vy);
Vx /= g;
Vy /= g;
D *= g;
bool visited[W+1][H+1][4];
rep(w, W+1) rep(h, H+1) rep(i, 4) visited[w][h][i] = false;
while(D--){
Hx = (Hx + Vx + W * 20) % (2 * W);
if(Hx > W){
Vx = -Vx;
Hx = 2 * W - Hx;
}
Hy = (Hy + Vy + H * 20) % (2 * H);
if(Hy > H){
Vy = -Vy;
Hy = 2 * H - Hy;
}
// cout << Hx << " " << Hy << endl;
if((Hx == Mx) && (Hy == My)) ans[q] = true;
ll dir = (Vx > 0) * 2 + (Vy > 0);
if(visited[Hx][Hy][dir]) break;
visited[Hx][Hy][dir] = true;
}
}
rep(q, Q){
if(ans[q]) puts("Hit");
else puts("Miss");
}
return 0;
}
graythunder1