Submission #3222684


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
using lint = long long int;
template<class T = int> using V = vector<T>;
template<class T = int> using VV = V< V<T> >;
template<class T> void assign(V<T>& v, int n, const auto& a = T()) { v.assign(n, a); }
template<class T, class... U> void assign(V<T>& v, int n, const U&... u) { v.resize(n); for (auto&& i : v) assign(i, u...); }

struct M {
  using T = array<lint, 3>;
  static T op(const T& a, const T& b) { return {min(a[0], b[0]), max(a[1], b[1]), a[2] + b[2]}; }
  static constexpr T e() { return {numeric_limits<lint>::max(), numeric_limits<lint>::min(), 0}; }
  static T mk(lint a) { return {a, a, a}; }
};

template<class M> struct ST {
  using T = typename M::T;
  int n;
  V<T> t;

  ST(int n) : n(n) {
    t.assign(2 * n, M::e());
  }

  void build() {
    for (int i = n - 1; i; i--) t[i] = M::op(t[2 * i], t[2 * i + 1]);
  }

  T get(int l, int r) {
    T resl = M::e(), resr = M::e();
    for (l += n, r += n; l < r; l >>= 1, r >>= 1) { 
      if (l & 1) resl = M::op(resl, t[l++]); 
      if (r & 1) resr = M::op(t[--r], resr);
    }
    return M::op(resl, resr);
  }

  T get(int i) { return t[i + n]; };

  void set(int i, const T& a) {
    for (t[i += n] = a; i >>= 1;) t[i] = M::op(t[2 * i], t[2 * i + 1]);
  }
};

int main() {
  cin.tie(NULL); ios::sync_with_stdio(false);
  int n, q; cin >> n >> q;
  V<> a(2 * n); for (int i = 0; i < 2 * n; i++) cin >> a[i];
  V<> b(2 * n); for (int i = 0; i < 2 * n; i++) cin >> b[i];
  lint sa = accumulate(a.begin(), a.end(), 0LL);
  ST<M> pos(2 * n), neg(2 * n);
  int cp = 0;
  for (int i = 1; i < 2 * n - 1; i++) (b[i] - a[i] >= 0 ? cp++, pos : neg).t[i + 2 * n] = M::mk(b[i] - a[i]);
  pos.build(), neg.build();
  for (int iq = 0; iq < q; iq++) {
    int p, x, y; cin >> p >> x >> y, p--;
    if (p and p < 2 * n - 1) {
      if (y - x >= 0) {
        pos.set(p, M::mk(y - x));
        neg.set(p, M::e());
        cp += (b[p] - a[p] < 0);
      } else {
        neg.set(p, M::mk(y - x));
        pos.set(p, M::e());
        cp -= (b[p] - a[p] >= 0);
      }
    }
    sa += x - a[p];
    a[p] = x, b[p] = y;
    lint s = pos.get(1, 2 * n - 1)[2];
    if (cp & 1) {
      s -= min(pos.get(1, 2 * n - 1)[0], -neg.get(1, 2 * n - 1)[1]);
    }
    cout << sa + s << '\n';
  }
}

Submission Info

Submission Time
Task C - Paired Parentheses
User risujiroh
Language C++14 (GCC 5.4.1)
Score 700
Code Size 2359 Byte
Status AC
Exec Time 119 ms
Memory 22016 KB

Judge Result

Set Name Sample Subtask1 Subtask2 All
Score / Max Score 0 / 0 200 / 200 300 / 300 200 / 200
Status
AC × 2
AC × 14
AC × 15
AC × 43
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt
Subtask1 00_example_01.txt, s1_01.txt, s1_02.txt, s1_03.txt, s1_04.txt, s1_05.txt, s1_06.txt, s1_07.txt, s1_08.txt, s1_09.txt, s1_10.txt, s1_11.txt, s1_12.txt, s1_13.txt
Subtask2 s2_14.txt, s2_15.txt, s2_16.txt, s2_17.txt, s2_18.txt, s2_19.txt, s2_20.txt, s2_21.txt, s2_22.txt, s2_23.txt, s2_24.txt, s2_25.txt, s2_26.txt, s2_27.txt, s2_28.txt
All 00_example_01.txt, 00_example_02.txt, s1_01.txt, s1_02.txt, s1_03.txt, s1_04.txt, s1_05.txt, s1_06.txt, s1_07.txt, s1_08.txt, s1_09.txt, s1_10.txt, s1_11.txt, s1_12.txt, s1_13.txt, s2_14.txt, s2_15.txt, s2_16.txt, s2_17.txt, s2_18.txt, s2_19.txt, s2_20.txt, s2_21.txt, s2_22.txt, s2_23.txt, s2_24.txt, s2_25.txt, s2_26.txt, s2_27.txt, s2_28.txt, s3_29.txt, s3_30.txt, s3_31.txt, s3_32.txt, s3_33.txt, s3_34.txt, s3_35.txt, s3_36.txt, s3_37.txt, s3_38.txt, s3_39.txt, s3_40.txt, s3_41.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 1 ms 256 KB
00_example_02.txt AC 1 ms 256 KB
s1_01.txt AC 1 ms 256 KB
s1_02.txt AC 1 ms 256 KB
s1_03.txt AC 1 ms 256 KB
s1_04.txt AC 1 ms 256 KB
s1_05.txt AC 1 ms 256 KB
s1_06.txt AC 1 ms 256 KB
s1_07.txt AC 1 ms 256 KB
s1_08.txt AC 1 ms 256 KB
s1_09.txt AC 1 ms 256 KB
s1_10.txt AC 1 ms 256 KB
s1_11.txt AC 1 ms 256 KB
s1_12.txt AC 1 ms 256 KB
s1_13.txt AC 1 ms 256 KB
s2_14.txt AC 3 ms 1152 KB
s2_15.txt AC 4 ms 1280 KB
s2_16.txt AC 34 ms 14336 KB
s2_17.txt AC 28 ms 11776 KB
s2_18.txt AC 48 ms 20608 KB
s2_19.txt AC 48 ms 20608 KB
s2_20.txt AC 48 ms 20608 KB
s2_21.txt AC 48 ms 20608 KB
s2_22.txt AC 3 ms 1152 KB
s2_23.txt AC 4 ms 1280 KB
s2_24.txt AC 3 ms 1152 KB
s2_25.txt AC 51 ms 20608 KB
s2_26.txt AC 51 ms 20608 KB
s2_27.txt AC 51 ms 20608 KB
s2_28.txt AC 51 ms 20608 KB
s3_29.txt AC 44 ms 11136 KB
s3_30.txt AC 57 ms 6656 KB
s3_31.txt AC 41 ms 16512 KB
s3_32.txt AC 100 ms 17152 KB
s3_33.txt AC 44 ms 11136 KB
s3_34.txt AC 119 ms 22016 KB
s3_35.txt AC 118 ms 22016 KB
s3_36.txt AC 107 ms 22016 KB
s3_37.txt AC 108 ms 22016 KB
s3_38.txt AC 110 ms 22016 KB
s3_39.txt AC 107 ms 22016 KB
s3_40.txt AC 37 ms 1024 KB
s3_41.txt AC 36 ms 1024 KB