Submission #1315727

#TimeUsernameProblemLanguageResultExecution timeMemory
1315727abcd123456Bulldozer (JOI17_bulldozer)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; const int MAXN = 2005; const ld PI = acosl(-1.0L); const ld EPS = 1e-12L; int n; ll X[MAXN], Y[MAXN], W[MAXN]; struct Node { ll sum, pre, suf, best; Node(ll v = 0) { sum = v; pre = suf = best = max(0LL, v); } }; Node st[4 * MAXN]; Node mergeNode(const Node &L, const Node &R) { Node res; res.sum = L.sum + R.sum; res.pre = max(L.pre, L.sum + R.pre); res.suf = max(R.suf, R.sum + L.suf); res.best = max({L.best, R.best, L.suf + R.pre}); return res; } void build(int id, int l, int r, const vector<ll> &arr) { if (l == r) { st[id] = Node(arr[l]); return; } int mid = (l + r) >> 1; build(id<<1, l, mid, arr); build(id<<1|1, mid+1, r, arr); st[id] = mergeNode(st[id<<1], st[id<<1|1]); } void update(int id, int l, int r, int pos, ll val) { if (l == r) { st[id] = Node(val); return; } int mid = (l + r) >> 1; if (pos <= mid) update(id<<1, l, mid, pos, val); else update(id<<1|1, mid+1, r, pos, val); st[id] = mergeNode(st[id<<1], st[id<<1|1]); } struct Event { ld ang; int u, v; bool operator<(const Event &o) const { if (fabsl(ang - o.ang) > EPS) return ang < o.ang; if (u != o.u) return u < o.u; return v < o.v; } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n; for (int i = 1; i <= n; ++i) cin >> X[i] >> Y[i] >> W[i]; vector<Event> ev; for (int i = 1; i <= n; ++i) for (int j = i + 1; j <= n; ++j) { ld ang = atan2l((ld)(Y[j] - Y[i]), (ld)(X[j] - X[i])); if (ang < 0) ang += PI; ev.push_back({ang, i, j}); } sort(ev.begin(), ev.end()); vector<int> ord(n + 1), pos(n + 1); iota(ord.begin(), ord.end(), 0); sort(ord.begin() + 1, ord.end(), [&](int a, int b) { if (X[a] != X[b]) return X[a] < X[b]; return Y[a] < Y[b]; }); for (int i = 1; i <= n; ++i) pos[ord[i]] = i; vector<ll> arr(n + 1); for (int i = 1; i <= n; ++i) arr[i] = W[ord[i]]; build(1, 1, n, arr); ll ans = st[1].best; for (size_t i = 0; i < ev.size(); ) { size_t j = i; while (j < ev.size() && fabsl(ev[j].ang - ev[i].ang) <= EPS) ++j; vector<pair<int,int>> sw; for (size_t k = i; k < j; ++k) { int u = ev[k].u, v = ev[k].v; int pu = pos[u], pv = pos[v]; if (pu == pv) continue; if (pu > pv) swap(pu, pv); sw.emplace_back(pu, pv); } sort(sw.begin(), sw.end()); sw.erase(unique(sw.begin

Compilation message (stderr)

bulldozer.cpp: In function 'int main()':
bulldozer.cpp:116:33: error: expected ')' at end of input
  116 |         sw.erase(unique(sw.begin
      |                        ~        ^
      |                                 )
bulldozer.cpp:116:33: error: expected '}' at end of input
bulldozer.cpp:102:41: note: to match this '{'
  102 |     for (size_t i = 0; i < ev.size(); ) {
      |                                         ^
bulldozer.cpp:116:33: error: expected '}' at end of input
  116 |         sw.erase(unique(sw.begin
      |                                 ^
bulldozer.cpp:65:12: note: to match this '{'
   65 | int main() {
      |            ^