Chef and Sub Array Problem Link #include <iostream> #include <stdio.h> #define sf(i) scanf("%d", &i) #define pf(i) printf("%d\n", i) using namespace std; int n, k, p; int a[100005], b[300005]; int sum[300005], tree[700005]; string s; void buildTree(int index, int s, int e) { if(s == e) { tree[index] = sum[s]; } else { int mid = (s + e) / 2; buildTree(2 * index + 1, s, mid); buildTree(2 * index + 2, mid + 1, e); tree[index] = max(tree[2 * index + 1], tree[2 * index + 2]); } } int query(int index, int s, int e, int qs, int qe) { if(qs > e || qe < s) return 0; if(qs <= s && qe >= e) return tree[index]; int mid = (s + e) / 2; int left = query(2 * index + 1, s, mid, qs, qe); int right = query(2 * index + 2, mid + 1, e, qs , qe);