Advertisement
askarulytarlan

Untitled

Apr 8th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. long long n, a[100500], m, l, r, inf = 1000000000, t[300500], mx = -10000000000;
  4.  
  5. void build(int v, int L, int R){
  6. if(L == R){
  7. t[v] = a[L];
  8. return;
  9. }
  10. int mid = (L + R) / 2;
  11. build(v * 2, L, mid);
  12. build(v * 2 + 1, mid + 1, R);
  13. t[v] = t[v*2] + t[v*2+1];
  14. }
  15.  
  16. int get_sum(int v, int L, int R, int l, int r){
  17. if(l <= L && R <= r){
  18. return t[v];
  19. }
  20. if(R < l || L > r){
  21. return -inf;
  22. }
  23. int mid = (L + R) / 2;
  24. return get_sum(v * 2, L, mid, l, r)+get_sum(v * 2 + 1, mid + 1, R, l, r);
  25. }
  26.  
  27. int main(){
  28. cin >> n;
  29. for(int i = 1; i <= n; i++){
  30. cin >> a[i];
  31. }
  32.  
  33. build(1, 1, n);
  34.  
  35. cin >> m;
  36. for(int i = 1; i <= m; i++){
  37. cin >> l >> r;
  38. mx = max(mx, get_sum(1, l, r, 1, n));
  39. }
  40. return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement