fork download
  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4.  
  5. #define rmq 1,N,0
  6. int data[500000*4];
  7. int N,M,in;
  8.  
  9. void update(int id,int v,int L,int R,int i)
  10. {
  11. if(L==R){
  12. data[i]=v;
  13. return;
  14. }
  15. int M=(L+R)/2;
  16. if(id<=M)update(id,v,L ,M,i*2+1);
  17. else update(id,v,M+1,R,i*2+2);
  18. data[i]=max(data[i*2+1],data[i*2+2]);
  19. }
  20. int find(int l,int r,int L,int R,int i)
  21. {
  22. if(L==l&&R==r)return data[i];
  23. int M=(L+R)/2;
  24. if(r<=M)return find(l,r,L ,M,i*2+1);
  25. if(M< l)return find(l,r,M+1,R,i*2+2);
  26. return max( find(l ,M,L ,M,i*2+1),
  27. find(M+1,r,M+1,R,i*2+2));
  28. }
  29. int main()
  30. {
  31. int a,b;
  32. scanf("%d",&N);
  33. for(int i=1;i<=N;++i){
  34. scanf("%d",&in);
  35. update(i,in,rmq);
  36. }
  37. scanf("%d",&M);
  38. while(M--)
  39. {
  40. scanf("%d%d",&a,&b);
  41. if(a>b)swap(a,b);
  42. printf("%d\n",find(a,b,rmq));
  43. }
  44. }
Success #stdin #stdout 0s 11112KB
stdin
Standard input is empty
stdout
Standard output is empty