Submission #362720

#TimeUsernameProblemLanguageResultExecution timeMemory
362720hoaphat1Fire (JOI20_ho_t5)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; long long findMaxAttraction(int n, int s, int d, int a[]) { long long ans = 0; long long now = 0; int L = 0, R = -1; vector<int> kt(n, 0); priority_queue<pair<int, int>, vector<pair<int,int>> , greater<pair<int, int>>> pq; priority_queue<pair<int, int>> smaller; int sz = 0; auto make_true = [&](int m) { while (sz > m && !pq.empty()) { auto x = pq.top(); pq.pop(); if (kt[x.second] != 1) continue; kt[x.second] = 2; now -= x.first; smaller.push(x); --sz; } while (sz < m && !smaller.empty()) { auto x = smaller.top(); smaller.pop(); if (kt[x.second] != 2) continue; kt[x.second] = 1; now += x.first; pq.push(x); ++sz; } }; auto add = [&](int id) { int v = a[id]; pq.emplace(v, id); now += v; kt[id] = 1; ++sz; }; auto del = [&](int id) { int v = a[id]; if (kt[id] == 2) { kt[id] = 0; return ; } kt[id] = 0; now -= v; sz--; }; auto moveL = [&](int l) { while (L < l) del(L++); while (L > l) add(--L); }; auto moveR = [&](int r) { while (R < r) add(++R); while (R > r) del(R--); }; function<void(int, int, int, int)> solve = [&](int l, int r, int L, int R) { if (l > r) return ; int mid = l + r >> 1; int pos = -1; moveR(L); moveL(mid); long long val = -1; for (int i = L; i <= R; i++) { moveR(i); int lim = d - min(s - mid, i - s) - (i - mid); make_true(lim); if (val < now) { val = now; pos = i; } } ans = max(ans, val); solve(l, mid - 1, L, pos); solve(mid + 1, r, pos, R); }; function<void(int, int, int, int)> solve1 = [&](int l, int r, int L, int R) { if (l > r) return ; int mid = l + r >> 1; int pos = -1; moveR(L); moveL(mid); long long val = -1; for (int i = L; i <= R; i++) { moveR(i); int lim = d - min(s - mid, i - s) - (i - mid); make_true(lim); if (val < now) { val = now; pos = i; } } ans = max(ans, val); solve1(mid + 1, r, pos, R); solve1(l, mid - 1, L, pos); }; solve(max(0, s - d), s, s, min(n - 1, s + d)); solve1(max(0, s - d), s, s, min(n - 1, s + d)); return ans; }

Compilation message (stderr)

ho_t5.cpp: In lambda function:
ho_t5.cpp:59:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   59 |   int mid = l + r >> 1;
      |             ~~^~~
ho_t5.cpp: In lambda function:
ho_t5.cpp:79:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   79 |   int mid = l + r >> 1;
      |             ~~^~~
/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status