This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
//Challenge: Accepted
#include "trilib.h"
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
#ifdef zisk
void debug(){cout << endl;}
template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);}
template<class T> void pary(T l, T r) {
while (l != r) cout << *l << " ", l++;
cout << endl;
}
#else
#define debug(...) 0
#define pary(...) 0
#endif
#define ll long long
#define maxn 200005
#define mod 1000000007
#define pii pair<int, int>
#define ff first
#define ss second
#define io ios_base::sync_with_stdio(0);cin.tie(0);
bool query(int a, int b, int c){
return is_clockwise(a, b, c);
}
bool cmp(int i, int j) {
return query(1, i, j);
}
int main() {
io
int n = get_n();
vector<int> up, low;
for (int i = 3;i <= n;i++) {
if (query(1, 2, i)) up.push_back(i);
else low.push_back(i);
}
sort(up.begin(), up.end(), cmp);
sort(low.begin(), low.end(), cmp);
pary(up.begin(), up.end());
pary(low.begin(), low.end());
deque<int> hull;
hull.push_back(2);
auto add = [&] (int i) {
while (hull.size() > 1) {
int cur = hull.back(), prv = hull[hull.size() - 2];
if (!query(prv, cur, i)) hull.pop_back();
else {
break;
}
}
hull.push_back(i);
debug(i);
pary(hull.begin(), hull.end());
};
for (int i:up) add(i);
add(1);
for (int i:low) add(i);
while (hull.size() > 2) {
if (!query(hull.back(), hull[0], hull[1])) hull.pop_front();
else if (!query(hull[hull.size() -2], hull.back(), hull[0])) hull.pop_back();
else {
break;
}
}
give_answer(hull.size());
}
Compilation message (stderr)
tri.cpp: In function 'int main()':
tri.cpp:15:19: warning: statement has no effect [-Wunused-value]
15 | #define pary(...) 0
| ^
tri.cpp:41:2: note: in expansion of macro 'pary'
41 | pary(up.begin(), up.end());
| ^~~~
tri.cpp:15:19: warning: statement has no effect [-Wunused-value]
15 | #define pary(...) 0
| ^
tri.cpp:42:2: note: in expansion of macro 'pary'
42 | pary(low.begin(), low.end());
| ^~~~
tri.cpp: In lambda function:
tri.cpp:14:20: warning: statement has no effect [-Wunused-value]
14 | #define debug(...) 0
| ^
tri.cpp:54:3: note: in expansion of macro 'debug'
54 | debug(i);
| ^~~~~
tri.cpp:15:19: warning: statement has no effect [-Wunused-value]
15 | #define pary(...) 0
| ^
tri.cpp:55:3: note: in expansion of macro 'pary'
55 | pary(hull.begin(), hull.end());
| ^~~~
# | 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... |