結果
問題 | No.61 リベリオン |
ユーザー | btk |
提出日時 | 2015-06-20 14:00:18 |
言語 | C++11 (gcc 11.4.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 2,355 bytes |
コンパイル時間 | 388 ms |
コンパイル使用メモリ | 56,408 KB |
最終ジャッジ日時 | 2024-11-14 19:05:14 |
合計ジャッジ時間 | 772 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘double dist(double, double, double)’: main.cpp:11:13: error: ‘round’ was not declared in this scope 11 | k = round(k); | ^~~~~ main.cpp: In function ‘int main()’: main.cpp:103:33: error: ‘round’ was not declared in this scope 103 | if (abs(round(abs(t*vy)) - abs(t*vy)) < eps){ | ^~~~~
ソースコード
#include<iostream> #include<fstream> #include<algorithm> using namespace std; const double eps = 1e-7; double dist(double t, double v, double h){ double d = abs(v)*t; double k = d / (h * 2); k = round(k); return round(d - k * 2 * h); } double pos(double t, int v, double h,double hy){ double dd = dist(t, v, h); if (dd >= h){ dd -= h; hy = h - hy; v = -v; } if (v < 0)dd = -dd; hy += dd; if (hy >= h){ hy = h - (hy - h); } else if (hy <= 0){ hy = -hy; } return hy; } int main(){ /* ifstream cin("in.txt"); ofstream cout("out.txt"); //*/ int Q; cin >> Q; while (Q--){ int w, h, d, mx, my, hx, hy, vx, vy; cin >> w >> h >> d >> mx >> my >> hx >> hy >> vx >> vy; d = min(d, 4 * h*w); if (vy == 0){ //tmp if (my != hy){ cout << "Miss" << endl; continue; } double t; if ((mx - hx > 0 && vx > 0) || (mx - hx < 0 || vx < 0)){ t = (mx - hx) / (double)vx; } else if (mx - hx<0 && vx>0){ t = (w - hx + w - mx) / (double)abs(vx); } else if (mx - hx>0 && vx < 0){ t = (hx + mx) / (double)abs(vx); } if (t <= d)cout << "Hit" << endl; else cout << "Miss" << endl; continue; } if (vx == 0){ if (mx != hx){ cout << "Miss" << endl; continue; } double t; if ((my - hy > 0 && vy > 0) || (my - hy < 0 || vy < 0)){ t = (my - hy) / (double)vy; } else if (my - hy<0 && vy>0){ t = (h - hy + h - my) / (double)abs(vy); } else if (my - hy>0 && vy < 0){ t = (hy + my) / (double)abs(vy); } if (t <= d)cout << "Hit" << endl; else cout << "Miss" << endl; continue; } double t; if ((mx - hx > 0 && vx > 0) || (mx - hx < 0 && vx < 0)){ t = (mx - hx) / (double)vx; } else if (mx - hx<0 && vx>0){ t = (w - hx + w - mx) / (double)abs(vx); vx = -vx; } else if (mx - hx>0 && vx < 0){ t = (hx + mx) / (double)abs(vx); vx = -vx; } else t = 0; bool flag = false; while (t<=d){ if (abs(round(abs(t*vy)) - abs(t*vy)) < eps){ // cout << t*vy << endl; if (abs(pos(t, vy, h, hy) - my) < eps){ flag = true; // cout << t << endl; break; } } if (vx>0){ t += abs(w - mx)*2.0 / abs(vx); } else t += abs(mx)*2.0 / abs(vx); vx *= -1; } if (flag)cout << "Hit" << endl; else cout << "Miss" << endl; } /* cin.close(); cout.close(); //*/ return 0; }