Submission #235662

# Submission time Handle Problem Language Result Execution time Memory
235662 2020-05-29T09:18:04 Z fedoseevtimofey Two Antennas (JOI19_antennas) C++14
24 / 100
3000 ms 22260 KB
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <random>
#include <iomanip>
#include <functional>
#include <cassert>
#include <bitset>
 
using namespace std;
 
typedef long long ll;

const int N = 2e5 + 7;
const int Inf = 1e9;

struct Tree {
  int t[4 * N];
  
  void modify(int id, int val, int l, int r, int v) {
    if (l == r) {
      t[v] = val;
    } else {
      int m = (l + r) >> 1;
      if (id <= m) modify(id, val, l, m, 2 * v + 1);
      else modify(id, val, m + 1, r, 2 * v + 2);
      t[v] = max(t[2 * v + 1], t[2 * v + 2]);
    }
  }

  int get(int ql, int qr, int l, int r, int v) {
    if (qr < l || r < ql) return -Inf;
    if (ql <= l && r <= qr) return t[v];
    int m = (l + r) >> 1;
    return max(get(ql, qr, l, m, 2 * v + 1), get(ql, qr, m + 1, r, 2 * v + 2));
  }
  
  Tree() {
    fill(t, t + 4 * N, -Inf);
  }
};

int main() {
  ios_base::sync_with_stdio(false); cin.tie(0);
#ifdef LOCAL
  freopen("input.txt", "r", stdin);
#endif
  int n;
  cin >> n;
  vector <int> h(n), a(n), b(n);
  for (int i = 0; i < n; ++i) {
    cin >> h[i] >> a[i] >> b[i];
  }
  Tree pos, neg;
  int q;
  cin >> q;
  while (q--) {
    int ql, qr;
    cin >> ql >> qr;
    --ql, --qr;
    vector <vector <int>> add(n), del(n);
    for (int i = ql; i <= qr; ++i) {
      //add[max(0, i - b[i])].push_back(i);
      //del[max(0, i - a[i])].push_back(i);
      int l = i + a[i], r = i + b[i];
      r = min(r, qr);
      if (l <= r) {
        add[l].push_back(i);
        del[r].push_back(i);
      }
    }
    int ans = -1;
    for (int i = ql; i <= qr; ++i) {
      for (int id : add[i]) {
        pos.modify(id, h[id], 0, n - 1, 0);
        neg.modify(id, -h[id], 0, n - 1, 0);
      }
      int l = max(ql, i - b[i]);
      int r = i - a[i];
      if (l <= r) {
        ans = max(ans, h[i] + neg.get(l, r, 0, n - 1, 0));
        ans = max(ans, -h[i] + pos.get(l, r, 0, n - 1, 0));
      }
      for (int id : del[i]) {
        pos.modify(id, -Inf, 0, n - 1, 0);
        neg.modify(id, -Inf, 0, n - 1, 0);
      }
    }
    cout << ans << '\n';
  }
}
# Verdict Execution time Memory Grader output
1 Correct 8 ms 6656 KB Output is correct
2 Correct 10 ms 6656 KB Output is correct
3 Correct 10 ms 6656 KB Output is correct
4 Correct 11 ms 6656 KB Output is correct
5 Correct 9 ms 6656 KB Output is correct
6 Correct 10 ms 6784 KB Output is correct
7 Correct 12 ms 6680 KB Output is correct
8 Correct 14 ms 6656 KB Output is correct
9 Correct 9 ms 6656 KB Output is correct
10 Correct 11 ms 6656 KB Output is correct
11 Correct 9 ms 6656 KB Output is correct
12 Correct 12 ms 6656 KB Output is correct
13 Correct 9 ms 6656 KB Output is correct
14 Correct 10 ms 6784 KB Output is correct
15 Correct 9 ms 6656 KB Output is correct
16 Correct 9 ms 6656 KB Output is correct
17 Correct 9 ms 6656 KB Output is correct
18 Correct 10 ms 6656 KB Output is correct
19 Correct 8 ms 6656 KB Output is correct
20 Correct 9 ms 6656 KB Output is correct
21 Correct 9 ms 6656 KB Output is correct
22 Correct 9 ms 6656 KB Output is correct
23 Correct 9 ms 6656 KB Output is correct
24 Correct 10 ms 6656 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 6656 KB Output is correct
2 Correct 10 ms 6656 KB Output is correct
3 Correct 10 ms 6656 KB Output is correct
4 Correct 11 ms 6656 KB Output is correct
5 Correct 9 ms 6656 KB Output is correct
6 Correct 10 ms 6784 KB Output is correct
7 Correct 12 ms 6680 KB Output is correct
8 Correct 14 ms 6656 KB Output is correct
9 Correct 9 ms 6656 KB Output is correct
10 Correct 11 ms 6656 KB Output is correct
11 Correct 9 ms 6656 KB Output is correct
12 Correct 12 ms 6656 KB Output is correct
13 Correct 9 ms 6656 KB Output is correct
14 Correct 10 ms 6784 KB Output is correct
15 Correct 9 ms 6656 KB Output is correct
16 Correct 9 ms 6656 KB Output is correct
17 Correct 9 ms 6656 KB Output is correct
18 Correct 10 ms 6656 KB Output is correct
19 Correct 8 ms 6656 KB Output is correct
20 Correct 9 ms 6656 KB Output is correct
21 Correct 9 ms 6656 KB Output is correct
22 Correct 9 ms 6656 KB Output is correct
23 Correct 9 ms 6656 KB Output is correct
24 Correct 10 ms 6656 KB Output is correct
25 Execution timed out 3069 ms 8344 KB Time limit exceeded
26 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 210 ms 20596 KB Output is correct
2 Correct 246 ms 22260 KB Output is correct
3 Correct 162 ms 17656 KB Output is correct
4 Correct 243 ms 22260 KB Output is correct
5 Correct 100 ms 13944 KB Output is correct
6 Correct 237 ms 22132 KB Output is correct
7 Correct 208 ms 20212 KB Output is correct
8 Correct 240 ms 22260 KB Output is correct
9 Correct 39 ms 9336 KB Output is correct
10 Correct 231 ms 22208 KB Output is correct
11 Correct 142 ms 16376 KB Output is correct
12 Correct 242 ms 22260 KB Output is correct
13 Correct 156 ms 19700 KB Output is correct
14 Correct 152 ms 19872 KB Output is correct
15 Correct 145 ms 19832 KB Output is correct
16 Correct 138 ms 20216 KB Output is correct
17 Correct 159 ms 19828 KB Output is correct
18 Correct 147 ms 20344 KB Output is correct
19 Correct 156 ms 19536 KB Output is correct
20 Correct 151 ms 19780 KB Output is correct
21 Correct 148 ms 19804 KB Output is correct
22 Correct 160 ms 19828 KB Output is correct
23 Correct 148 ms 19572 KB Output is correct
24 Correct 137 ms 19700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 6656 KB Output is correct
2 Correct 10 ms 6656 KB Output is correct
3 Correct 10 ms 6656 KB Output is correct
4 Correct 11 ms 6656 KB Output is correct
5 Correct 9 ms 6656 KB Output is correct
6 Correct 10 ms 6784 KB Output is correct
7 Correct 12 ms 6680 KB Output is correct
8 Correct 14 ms 6656 KB Output is correct
9 Correct 9 ms 6656 KB Output is correct
10 Correct 11 ms 6656 KB Output is correct
11 Correct 9 ms 6656 KB Output is correct
12 Correct 12 ms 6656 KB Output is correct
13 Correct 9 ms 6656 KB Output is correct
14 Correct 10 ms 6784 KB Output is correct
15 Correct 9 ms 6656 KB Output is correct
16 Correct 9 ms 6656 KB Output is correct
17 Correct 9 ms 6656 KB Output is correct
18 Correct 10 ms 6656 KB Output is correct
19 Correct 8 ms 6656 KB Output is correct
20 Correct 9 ms 6656 KB Output is correct
21 Correct 9 ms 6656 KB Output is correct
22 Correct 9 ms 6656 KB Output is correct
23 Correct 9 ms 6656 KB Output is correct
24 Correct 10 ms 6656 KB Output is correct
25 Execution timed out 3069 ms 8344 KB Time limit exceeded
26 Halted 0 ms 0 KB -