結果
問題 | No.2555 Intriguing Triangle |
ユーザー | shobonvip |
提出日時 | 2023-12-02 00:11:17 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,206 bytes |
コンパイル時間 | 2,110 ms |
コンパイル使用メモリ | 200,596 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-26 16:05:42 |
合計ジャッジ時間 | 3,063 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 28 |
ソースコード
#include<bits/stdc++.h> using namespace std; int main(){ int a, b, c; cin >> a >> b >> c; auto hen_to_cos = [&](double a, double b, double c){ return (a*a + b*b - c*c) / (2.0*a*b); }; auto exist = [&](int a, int b, int c){ if (a + b > c && b + c > a && c + a > b) return true; return false; }; const double eps = 1e-7; bool mode = false; for (int x=a+2; x<b+c; x++){ if (!exist(x, b, c)) continue; double ax = 0.0, ay = 0.0; double cx = c, cy = 0.0; double bx, by; double cos1 = hen_to_cos(b, c, x); double sin1 = sqrt(1 - cos1 * cos1); bx = cos1 * b; by = sin1 * b; for (int y=1; ; y++){ if (x-y-a <= 0) break; double dx = bx + (cx - bx) * (double)y / (double)x; double dy = by + (cy - by) * (double)y / (double)x; double ex = bx + (cx - bx) * (double)(y+a) / (double)x; double ey = by + (cy - by) * (double)(y+a) / (double)x; double AD = sqrt((dx - ax) * (dx - ax) + (dy - ay) * (dy - ay)); double AE = sqrt((ex - ax) * (ex - ax) + (ey - ay) * (ey - ay)); if (abs(hen_to_cos(b, AD, y) - hen_to_cos(c, AE, x-y-a)) < eps){ mode = true; break; } } if (mode) break; } if (mode){ cout << "Yes\n"; }else{ cout << "No\n"; } }