結果
問題 | No.635 自然門松列 |
ユーザー | pekempey |
提出日時 | 2018-01-19 21:50:53 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 650 ms |
コード長 | 1,037 bytes |
コンパイル時間 | 774 ms |
コンパイル使用メモリ | 72,704 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-23 08:47:02 |
合計ジャッジ時間 | 1,368 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 23 |
ソースコード
#include <iostream> #include <algorithm> #include <vector> using namespace std; const double eps = 1e-8; bool is_kadomatsu(double x, double y, double z) { if (abs(x - y) < eps) return false; if (abs(x - z) < eps) return false; if (abs(y - z) < eps) return false; return (x < y && y > z || x > y && y < z); } int main() { int T; cin >> T; while (T--) { double x[3]; double y[3]; for (int i = 0; i < 3; i++) cin >> x[i]; for (int i = 0; i < 3; i++) cin >> y[i]; vector<double> cand; cand.push_back(0); cand.push_back(12312312); // x[i]+y[i]*k == x[j]+y[j]*k for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (y[j] != y[i]) { double c = (x[i] - x[j]) / (y[j] - y[i]); cand.push_back(c - 1e-6); cand.push_back(c + 1e-6); } } } bool ok = false; for (double c : cand) if (c >= 0) { ok |= is_kadomatsu(x[0] + y[0] * c, x[1] + y[1] * c, x[2] + y[2] * c); } puts(ok ? "YES" : "NO"); } }