Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Counter-Clockwise"
https://onlinejudge.u-aizu.ac.jp/problems/CGL_1_C
・反時計回り
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #CGL_1_C : Counter-Clockwise
/* Aizu Online Judge in C++ #CGL_1_C : Counter-Clockwise https://onlinejudge.u-aizu.ac.jp/problems/CGL_1_C 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using C=complex<double>; string f(C a,C b,C c){ C ab=b-a,ac=c-a; C k=ac*conj(ab); if(k.imag()>0){ return "COUNTER_CLOCKWISE"; } if(k.imag()<0){ return "CLOCKWISE"; } if(k.real()<0){ return "ONLINE_BACK"; } if(abs(ab)<abs(ac)){ return "ONLINE_FRONT"; } return "ON_SEGMENT"; } int main(void){ double x0,y0,x1,y1,x2,y2; int n; cin>>x0>>y0>>x1>>y1>>n; C a(x0,y0); C b(x1,y1); while(n--){ cin>>x2>>y2; C c(x2,y2); cout<<f(a,b,c)<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/