제출 #1160742

#제출 시각UTC-0아이디문제언어결과실행 시간메모리
11607422025-03-03 01:20:33thelegendary08Sjeckanje (COCI21_sjeckanje)C++17
55 / 110
55 ms17476 KiB
#include<bits/stdc++.h>
#define f0r(i,n) for(int i = 0; i<n; i++)
#define pb push_back
#define vi vector<long long int>
#define ll long long int
#define mp make_pair
#define pii pair<ll,ll>
#define FOR(i, k, n) for(int i = k; i<n; i++)
using namespace std;
const int mxn = 2e5 + 5;
ll d[mxn];
vector<vector<ll>>tree(mxn, vector<ll>(4));
vector<ll> merge(vi a, vi b, bool same){
if(same){
return {max(a[0], a[1]) + max(b[0], b[2]), max(a[0], a[1]) + max(b[1], b[3]), max(a[2], a[3]) + max(b[0], b[2]), max(a[2], a[3]) + max(b[1], b[3])};
}
else{
return {max(a[0] + b[2], max(a[1] + b[0], a[0] + b[0])), max(a[1] + b[1], max(a[0] + b[3], a[0] + b[1])), max(a[2] + b[2], max(a[3] + b[0], a[2] + b[0])), max(a[3] + b[1], max(a[2] + b[3], a[2] + b[1]))};
}
}
vector<ll> build(int l, int r, int node = 1){
if(l == r){
tree[node] = {0, (ll)-1e17, (ll)-1e17, abs(d[l])};
return tree[node];
}
else{
int mid = (l + r) / 2;
tree[node] = merge(build(l, mid, node * 2), build(mid + 1, r, node * 2 + 1),!((d[mid] > 0 && d[mid + 1] < 0) || (d[mid] < 0 && d[mid + 1] > 0)));
return tree[node];
}
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...