Submission #572134

#TimeUsernameProblemLanguageResultExecution timeMemory
572134piOOETriangles (CEOI18_tri)C++17
0 / 100
1 ms324 KiB
#include <bits/stdc++.h> #include "trilib.h" using namespace std; #define sz(x) ((int)size(x)) #define all(x) begin(x), end(x) #define trace(x) cout << #x << ": " << (x) << endl; typedef long long ll; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); int rand(int l, int r) { return (int) ((ll) rnd() % (r - l + 1)) + l; } const int N = 40000; const ll infL = 3e18; int n; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); n = get_n(); vector<int> ord(n); iota(all(ord), 0); stable_sort(1 + all(ord), [](int i, int j) { return !is_clockwise(1, i + 1, j + 1); }); int x = 0; for (int iter = 0; iter < 15; ++iter) { vector<int> st; for (int i = 0; i < sz(ord); ++i) { if (ord[i] == x) { if (i) { rotate(begin(ord), begin(ord) + i, end(ord)); break; } } } for (int i: ord) { while (sz(st) > 1 && is_clockwise(st.end()[-2] + 1, st.back() + 1, i + 1)) { st.pop_back(); } st.push_back(i); } ord = st; x = ord[rand(0, sz(ord) - 1)]; } cout << sz(ord); 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...