이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include "trilib.h"
using namespace std;
const int MAXN = 4e5;
int n;
int ini;
int v[MAXN];
int marc[MAXN];
void quickSort(int l, int r);
int main(){
srand(time(0));
n = get_n();
for(int i = 1; i <= n; i++)
v[i] = i;
ini = rand() % n;
ini++;
swap(v[1], v[ini]);
quickSort(2, n);
int topo = -1;
int ans = 0;
vector<int> hull;
for(int i = 1; i <= n; i++){
while(topo > 1 && !is_clockwise(hull[topo - 1], hull[topo], v[i])){
topo--;
hull.pop_back();
}
hull.push_back(v[i]);
topo++;
}
while(topo > 1 && !is_clockwise(hull[topo - 1], hull[topo], hull[0])){
topo--;
hull.pop_back();
}
ans = hull.size();
if(topo > 1 && !is_clockwise(hull[topo], hull[0], hull[1])){
ans--;
}
give_answer(ans);
}
void quickSort(int l, int r){
if(l >= r) return;
int point = rand() % (r - l + 1);
point += l;
point = v[point];
vector<int> left;
vector<int> right;
for(int i = l; i <= r; i++){
if(v[i] == point) continue;
if(is_clockwise(ini, point, v[i])) right.push_back(v[i]);
else left.push_back(v[i]);
}
int id = l;
for(int i = 0; i < left.size(); i++)
v[id++] = left[i];
int mid = id;
v[id++] = point;
for(int i = 0; i < right.size(); i++)
v[id++] = right[i];
quickSort(l, mid - 1);
quickSort(mid + 1, r);
}
컴파일 시 표준 에러 (stderr) 메시지
tri.cpp: In function 'void quickSort(int, int)':
tri.cpp:58:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
58 | for(int i = 0; i < left.size(); i++)
| ~~^~~~~~~~~~~~~
tri.cpp:62:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
62 | for(int i = 0; i < right.size(); i++)
| ~~^~~~~~~~~~~~~~
# | 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... |