/* code on line 47 lel
##########################################################################################
################################+++*%#++++#%+++++##*++%%*+*###############################
###############################*----@+----%%-----##+--=@=-=%##############################
###############################*----*-----%*--=--+#+---+=-=%##############################
###############################*--+---=---%=--#--=%+------=%##############################
###############################*--*=--*---%---+---%+--+---=%##############################
###############################*--*+--#---#---+=--*+--@=--=%##############################
#####################%%%########++##++%+++#+++%#++**++%%++*###############################
##################%@@@@@@%################################################################
##################@@@@@%##################################################################
###################@@@%%%*################################################################
####################%%%%%#*###############################################################
####################%%%###################################################################
#################%%@@@@@%#################################################################
################%@@@@@@@@@####################################***********#################
################@@@@@@@@@@#################################***************################
################@@@@@@@@@@%##############################********************#############
################@@@@@@@%%%##############################******++++++++********############
################%@@@@@@#%%#############################******=-------+********############
#################@@@@@@%%%#############################******=-------+********############
%%###############@@@@@@@%@%############################******=------=+*****###############
%@%%%%###########%@@@@@@@%@############################%%%#*#++*+++++*#####%%####%%###%%%%
@@@%%%%%%%%%%%%%%@@@@@@@@@%%#%%%%%%@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%@@@@@%@@@@@%@%%%%%%%
%%%%%%%%@@@%%%%%%@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@
@%%%%%%@@@@@@@@@@%@@@@@@@@@@%%%%%@@@%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
%%%%%%%%%@%@@@@@@@@@@@@@@@@@%%%@@%@%@@@@%@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%@@@%%@%%%@@@@%%@@@@@@@@%%@@@@@@@@@@%@@@@@@@@@@@@%%@@@@@@@@@
%@@%%%%%%%@@@%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@%%@%@%@@@%@@%@@@@@@@%@@@%%@@%@@%@@@@
%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@%@@%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@
%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@%@%@@@@@@%%%%%@@%%%@%%@%%%%@@@@@@@@@@@@@@@@@
%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@
%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@@@%%%@@@@@@@@@@@@@@%@%%@@%%@@@@@@@@@@@@@%%%@
%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%@%%@@@@@@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@%@%
%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%@@@@@@%@@%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@
%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%@@@%@@%%%%%%@@@@@@@@@@@@@@@@@@%@%%%@@@@%%@@@@@@@@@@@@@@
%%%%%%%%%%%%@%@%%%%%@@@@@@@@%%%%%%%%@%%%%%%%@@@@@@@@%%@@%@@@%%@@%%@%%%@@%@%%%@@@@@%@@@@@@@
%%%%%%%%%@@@%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@%%%%%@%%%%@@@@@@%%%@@@@%%@@%%
%%%%%%%%%%%%%%%@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%@@%@%%%%%%%
%%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@%%%@%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%@@%@@@%@%@%%%%%%@@@
%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@%%%@%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@
%%@%%%@@@@@@@%@@@@@@@%@%@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%@@@@@@@@@%@@@@@@@@@%%@%%@%@@@@@@@@
@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%@@@@%%%%%@@@@%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@
%@@@@@@@@@@@@@@@@%%%%%%@%@@@@@@%@%@@@@%%@%%%%%%@@%@%@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@
@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@%%%%@%%%%%%@%@@%%@%%%%%%%%%%%%@@@%@@@%@@@@@@@@@%@@@%@@
*/
#include "bits/stdc++.h"
#define ll long long
#define ld long double
#define ff first
#define ss second
#define pii pair<int, int>
#define mp make_pair
void setIO(std::string s = ""){
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
if (!s.empty()){
freopen((s+".in").c_str(), "r", stdin);
freopen((s+".out").c_str(), "w", stdout);
}
}
const int N = 2e5 + 1;
struct node {
ll l, r;
ll dp[2][2];
node(){
l = r = dp[0][0] = dp[0][1] = dp[1][0] = dp[1][1] = 0;
}
};
std::vector<node> st;
node merge(node l, node r){
node ret;
ret.l = l.l;
ret.r = r.r;
for (int x = 0; x < 2; x++){
for (int y = 0; y < 2; y++){
for (int m = 0; m < 2; m++) {
for (int mm = 0; mm < 2; mm++){
if (m && mm){
if ((l.r < 0) == (r.l < 0)){
ret.dp[x][y] = std::max(ret.dp[x][y], l.dp[x][m] + r.dp[mm][y]);
}
} else {
ret.dp[x][y] = std::max(ret.dp[x][y], l.dp[x][m] + r.dp[mm][y]);
}
}
}
}
}
return ret;
}
void upd(int id, int l, int r, int p, int v){
if (l == r){
st[id].l += v;
st[id].r += v;
st[id].dp[0][1] = st[id].dp[0][0] = st[id].dp[1][0] = 0;
st[id].dp[1][1] = abs(st[id].l);
return;
}
int m = (l + r) >> 1;
if (p <= m) upd(id<<1, l, m, p, v);
else upd(id<<1|1, m+1, r, p, v);
st[id] = merge(st[id<<1], st[id<<1|1]);
}
int main(){
int n, q;
std::cin >> n >> q;
st = std::vector<node>(4*n);
int pre, post;
std::cin >> pre;
for (int i = 0; i < n-1; i++) {
std::cin >> post;
upd(1, 0, n-2, i, post - pre);
std::swap(pre, post);
}
for (int i = 1; i <= q; i++){
int l, r;
ll x;
std::cin >> l >> r >> x;
l--; r--;
if (l-1 >= 0) upd(1, 0, n-2, l-1, x);
if (r < n-1) upd(1, 0, n-2, r, -x);
std::cout << st[1].dp[1][1] << '\n';
}
}
Compilation message (stderr)
Main.cpp: In function 'void setIO(std::string)':
Main.cpp:61:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
61 | freopen((s+".in").c_str(), "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:62:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
62 | freopen((s+".out").c_str(), "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |