# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1160742 | thelegendary08 | Sjeckanje (COCI21_sjeckanje) | C++17 | 55 ms | 17476 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];
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |