이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "trilib.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
vector<int> Hull(vector<int> v)
{
sort(v.begin(),v.end(),[](int x, int y){ return is_clockwise(1,y,x);});
vector<int> ans;
ans.pb(1);
for(int i:v)
{
while(ans.size()>1 && is_clockwise(ans[ans.size()-2],ans.back(),i)) ans.pop_back();
ans.pb(i);
}
return ans;
}
int main()
{
int n=get_n();
vector<int> v[2];
for(int i=3;i<=n;i++) v[is_clockwise(1,2,i)].pb(i);
if(v[0].empty() || v[1].empty())
{
if(v[0].empty()) v[0]=v[1];
v[0].pb(2);
v[0]=Hull(v[0]);
give_answer(v[0].size());
return 0;
}
v[0].pb(2);
v[1].pb(2);
v[0]=Hull(v[0]);
v[1]=Hull(v[1]);
for(int i:v[0]) printf("%i ",i);printf("\n");
for(int i:v[1]) printf("%i ",i);printf("\n");
int l0=0,r0=v[0].size()-1,l1=0,r1=v[1].size()-1;
if(v[0][1]==2) l0=1,r1--;
else l1=1,r0--;
while(1)
{
if(l0+1<r0 && is_clockwise(v[1][r1],v[0][l0],v[0][l0+1])) l0++;
else if(r1>l1 && is_clockwise(v[0][l0],v[1][r1-1],v[1][r1])) r1--;
else break;
}
while(1)
{
if(l1+1<r1 && is_clockwise(v[0][r0],v[1][l1],v[1][l1+1])) l1++;
else if(r0>l0 && is_clockwise(v[1][l1],v[0][r0-1],v[0][r0])) r0--;
else break;
}
vector<int> all;
for(int i=l0;i<=r0;i++) all.pb(v[0][i]);
for(int i=l1;i<=r1;i++) all.pb(v[1][i]);
sort(all.begin(),all.end());
int ans=unique(all.begin(),all.end())-all.begin();
give_answer(ans);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
tri.cpp: In function 'int main()':
tri.cpp:34:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
for(int i:v[0]) printf("%i ",i);printf("\n");
^~~
tri.cpp:34:34: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
for(int i:v[0]) printf("%i ",i);printf("\n");
^~~~~~
tri.cpp:35:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
for(int i:v[1]) printf("%i ",i);printf("\n");
^~~
tri.cpp:35:34: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
for(int i:v[1]) printf("%i ",i);printf("\n");
^~~~~~| # | 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... |