이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |