fork download
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.StringTokenizer;
  5. //import java.util.TreeMap;
  6.  
  7.  
  8. class GSS1 {
  9. static int segment_tree[];
  10. static int array[];
  11. public static void main(String[] args) throws NumberFormatException, IOException {
  12. // TODO Auto-generated method stub
  13. int N=Integer.parseInt(br.readLine().trim());
  14. array=new int[N];
  15. StringTokenizer st=new StringTokenizer(br.readLine().trim());
  16. for(int i=0;i<N;i++){
  17. array[i]=Integer.parseInt(st.nextToken());
  18. }
  19. segment_tree=new int[4*N];
  20. build(1, 0, N-1);
  21. //for(int i=0;i<2*N;i++)System.out.print(segment_tree[i]+" ");
  22. //System.out.println();
  23. int M=Integer.parseInt(br.readLine().trim());
  24. StringBuilder sb=new StringBuilder();
  25. for(int i=0;i<M;i++){
  26. //TreeMap<Integer,Integer> tm=new TreeMap<Integer, Integer>();
  27. st=new StringTokenizer(br.readLine().trim());
  28. int x=Integer.parseInt(st.nextToken());
  29. int y=Integer.parseInt(st.nextToken());
  30. int nas=query(1, 0, N-1, x-1, y-1);
  31. sb.append(nas+"\n");
  32. }
  33. System.out.println(sb);
  34. }
  35. public static void build(int node,int a,int b){
  36. if(a>b)return;//out of range
  37. else if(a==b){
  38. segment_tree[node]= array[a];
  39. return;
  40. }
  41. build(node*2, a,(a+b)/2);
  42. build(node*2+1, 1+(a+b)/2, b);
  43. segment_tree[node]=Math.max(segment_tree[node*2],Math.max(segment_tree[node*2+1],segment_tree[node*2]+segment_tree[node*2+1]));
  44.  
  45. }
  46. public static int query(int node,int a,int b,int i,int j){
  47. if(a>j || b<i || a>b)return -1000000000;
  48. else if(a>=i && b<=j)return segment_tree[node];
  49. int q1=query(node*2, a,(a+ b)/2, i, j);
  50. int q2=query(node*2+1,1+(a+b)/2,b,i,j);
  51. //System.out.println(q1+" "+q2+" "+Math.max(q1, Math.max(q2,q1+q2)));
  52. return Math.max(q1, Math.max(q2,q1+q2));
  53. }
  54. }
Success #stdin #stdout 0.08s 380160KB
stdin
6
1 2 79 80 -90 -8
1
1 6
stdout
162