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 |
|
|
|
|
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 |