結果
問題 | No.635 自然門松列 |
ユーザー | latte0119 |
提出日時 | 2018-01-19 22:26:54 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 3 ms / 650 ms |
コード長 | 1,561 bytes |
コンパイル時間 | 1,433 ms |
コンパイル使用メモリ | 161,120 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-23 08:48:03 |
合計ジャッジ時間 | 2,371 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 23 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define int long long #define rep(i,n) for(int i=0;i<(n);i++) #define pb push_back #define all(v) (v).begin(),(v).end() #define fi first #define se second typedef vector<int>vint; typedef pair<int,int>pint; typedef vector<pint>vpint; template<typename A,typename B>inline void chmin(A &a,B b){if(a>b)a=b;} template<typename A,typename B>inline void chmax(A &a,B b){if(a<b)a=b;} int gcd(int a,int b){ return b?gcd(b,a%b):a; } pint calc(int x,int xx,int y,int yy){ if(y==yy)return {0,1}; if((y-yy)*(xx-x)<0)return {0,1}; int d1=y-yy; int d2=xx-x; if(d1<0||d2<0){ d1*=-1;d2*=-1; } int g=gcd(d1,d2); d1/=g;d2/=g; return {d2,d1}; } signed main(){ int N;cin>>N; while(N--){ int x[3],y[3]; rep(i,3)cin>>x[i]; rep(i,3)cin>>y[i]; if(y[0]==y[1]&&x[0]==x[1]){ cout<<"NO"<<endl; continue; } if(y[2]==y[1]&&x[2]==x[1]){ cout<<"NO"<<endl; continue; } if(x[0]!=x[2]) if(max(x[0],x[2])<x[1]||min(x[0],x[2])>x[1]){ cout<<"YES"<<endl; continue; } pint p1,p2; p1=calc(x[0],x[1],y[0],y[1]); p2=calc(x[2],x[1],y[2],y[1]); rep(i,3)x[i]+=y[i]*1001001001; if(x[0]!=x[2]) if(max(x[0],x[2])<x[1]||min(x[0],x[2])>x[1]){ cout<<"YES"<<endl; continue; } if(p1!=p2)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }