제출 #291476

#제출 시각아이디문제언어결과실행 시간메모리
291476groeneprofTriangles (CEOI18_tri)C++14
100 / 100
37 ms2352 KiB
#include <bits/stdc++.h> #include "trilib.h" #define P(a) do{if(debug) cout<<a<<endl;} while(false) #define H(a) P(#a<<": "<<a) #define FR(i,a,b) for(int i = (a); i<(b); i++) #define F(i,n) FR(i,0,n) const int debug = 0; using namespace std; bool comp(int a, int b){ return is_clockwise(1,a,b); } int n; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); n = get_n(); vector<int> v1 = {2},v2; for(int i = 3; i<=n; i++){ if(is_clockwise(1,2,i)){ v1.push_back(i); } else{ v2.push_back(i); } } P("aaaaaaaa"); sort(v1.begin(),v1.end(),comp); P("a"); sort(v2.begin(),v2.end(),comp); P("b"); v1.push_back(1); v1.insert(v1.end(),v2.begin(),v2.end()); deque<int> dq; if(debug){ for(int i : v1){ cout<<i<<" "; } cout<<endl; } for(int i : v1){ while(true){ if(dq.size()<2 || is_clockwise(dq[dq.size()-2],dq[dq.size()-1],i)) { dq.push_back(i); break; } else{ dq.pop_back(); } } } P("c"); if(debug){ for(int i : dq){ cout<<i<<" "; } cout<<endl; } bool a = is_clockwise(dq[dq.size()-1],dq[0],dq[1]); bool b = is_clockwise(dq[dq.size()-2],dq[dq.size()-1],dq[0]); while(!a || !b){ if(!a){ dq.pop_front(); } if(!b){ dq.pop_back(); } if(debug){ for(int i : dq){ cout<<i<<" "; } cout<<endl; } a = is_clockwise(dq[dq.size()-1],dq[0],dq[1]); b = is_clockwise(dq[dq.size()-2],dq[dq.size()-1],dq[0]); } give_answer(dq.size()); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...