結果
問題 | No.55 正方形を描くだけの簡単なお仕事です。 |
ユーザー |
![]() |
提出日時 | 2015-06-02 15:06:39 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 50 ms / 5,000 ms |
コード長 | 1,839 bytes |
コンパイル時間 | 877 ms |
コンパイル使用メモリ | 92,500 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-14 13:49:50 |
合計ジャッジ時間 | 2,648 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 |
ソースコード
#include<iostream>#include<fstream>#include<sstream>#include<string>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<stack>#include<queue>#include<set>#include<map>#include<vector>#include<list>#include<algorithm>#include<utility>#include<complex>using namespace std;typedef complex<double> P;typedef vector<P> Poly;const double eps = 1e-8;inline double dot(const P a, const P b){//A dot Breturn a.real()*b.real() + a.imag()*b.imag();}inline double cross(const P a, const P b){//A cross Breturn a.real()*b.imag() - a.imag()*b.real();}bool less_P(const P& l, const P& r){if (l.real() == r.real())return l.imag() < r.imag();else return l.real() < r.real();}inline void convex_hull(Poly p, Poly& res){int k = 0, t;res.resize(2 * p.size());sort(p.begin(),p.end(),less_P);for(int i=0;i<(int)p.size();i++){while (k > 1 && (cross(res[k - 1] - res[k - 2], p[i] - res[k - 1])<eps))k--;res[k++] = p[i];}t = k;for(int i=(int)p.size()-1;i>=0;i--){while (k > t && (cross(res[k - 1] - res[k - 2], p[i] - res[k - 1])<eps))k--;res[k++] = p[i];}res.resize(k-1);}int main(){int x[4],y[4];for(int i=0;i<3;i++){cin>>x[i]>>y[i];}for(x[3]=-200;x[3]<=200;x[3]++)for(y[3]=-200;y[3]<=200;y[3]++){Poly test(4),res;for(int i=0;i<4;i++){test[i].real(x[i]);test[i].imag(y[i]);}convex_hull(test,res);bool flag=true;for(int i=0;i<(int)res.size();i++){double tmp=dot(res[(i+2)%res.size()]-res[(i+1)%res.size()],res[(i+1)%res.size()]-res[i]);if(tmp>eps||tmp<-eps)flag=false;tmp=abs(res[(i+2)%res.size()]-res[(i+1)%res.size()])-abs(res[(i+1)%res.size()]-res[i]);if(tmp>eps||tmp<-eps)flag=false;}if(flag){cout<<x[3]<<" "<<y[3]<<endl;return 0;}}cout<<-1<<endl;return 0;}