結果
問題 | No.760 Where am I moved to? |
ユーザー | chocorusk |
提出日時 | 2018-12-08 00:28:28 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,704 bytes |
コンパイル時間 | 831 ms |
コンパイル使用メモリ | 96,980 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-12 07:09:52 |
合計ジャッジ時間 | 7,748 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 1 ms
5,248 KB |
testcase_04 | AC | 1 ms
5,248 KB |
testcase_05 | AC | 2 ms
5,248 KB |
testcase_06 | AC | 1 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | AC | 2 ms
5,248 KB |
testcase_09 | AC | 1 ms
5,248 KB |
testcase_10 | AC | 1 ms
5,248 KB |
ソースコード
#include <cstdio> #include <cstring> #include <iostream> #include <string> #include <cmath> #include <bitset> #include <vector> #include <map> #include <set> #include <queue> #include <deque> #include <algorithm> #include <complex> #include <unordered_map> #include <unordered_set> #include <random> using namespace std; typedef long long int ll; //typedef pair<int, int> P; const double PI=acos(-1.0); const double EPS=1e-10; double add(double a, double b){ if(abs(a+b)<EPS*(abs(a)+abs(b))) return 0; return a+b; } struct P{ double x, y; P() {} P(double x, double y): x(x), y(y){ } P operator+ (P p){ return P(add(x, p.x), add(y, p.y)); } P operator- (P p){ return P(add(x, -p.x), add(y, -p.y)); } P operator* (double d){ return P(x*d, y*d); } double dot(P p){ return add(x*p.x, y*p.y); } double det(P p){ return add(x*p.y, -y*p.x); } bool operator< (const P& p) const{ if(abs(x-p.x)>EPS){ return x<p.x; }else{ return y<p.y-EPS; } } }; double atan(P p){ return atan2(p.y, p.x); } P rot(P p, double t){ return P(p.x*cos(t)-p.y*sin(t), p.x*sin(t)+p.y*cos(t)); } int main() { double xa, ya, ta; cin>>xa>>ya>>ta; ta=ta/180*PI; P p0=P(xa, ya); double x11, y11, x12, y12, x21, y21, x22, y22; cin>>x11>>y11>>x12>>y12>>x21>>y21>>x22>>y22; P p1=P(x11, y11), p2=P(x12, y12), q1=P(x21, y21), q2=P(x22, y22); double t=atan(p2-p1)-atan(q2-q1); double tb=ta+t; if(tb<0){ while(tb<0) tb+=(2*PI); }else if(tb>=2*PI){ while(tb>=2*PI) tb-=(2*PI); } P q0=p1-rot(q1-p0, t); printf("%.3lf %.3lf %.3lf\n", q0.x, q0.y, tb/PI*180); return 0; }