#include using namespace std; int st[1000001]; int getMaxUtil(int qs,int qe,int ss,int se,int si) { if(qs<=ss && qe>=se) return st[si]; if(seqe) return 0; int mid=ss+(se-ss)/2; int a=getMaxUtil(qs,qe,ss,mid,2*si+1); int b=getMaxUtil(qs,qe,mid+1,se,2*si+2); return a>b?a:b; } int getMax(int n,int s,int e) { return getMaxUtil(s,e,0,n-1,0); } void updateValUtil(int s,int e,int i,int new_val,int si) { if(ie) return; st[si]=st[si]>new_val?st[si]:new_val; if(s!=e) { int mid=s+(e-s)/2; updateValUtil(s,mid,i,new_val,2*si+1); updateValUtil(mid+1,e,i,new_val,2*s+2); } } void updateVal(int arr[],int n,int i,int new_val) { //int diff=new_val-arr[i]; arr[i]=new_val; updateValUtil(0,n-1,i,new_val,0); } int constructST(int arr[],int s,int e,int i) { if(s==e) { st[i]=arr[s]; return st[i]; } int mid=s+(e-s)/2; int a=constructST(arr,s,mid,2*i+1); int b=constructST(arr,mid+1,e,2*i+2); st[i]=a>b?a:b; return st[i]; } int b[1000000]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin>>n; int arr[n]; for(int i=0;i>arr[i]; constructST(arr,0,n-1,0); int s=0; for(int k=0;k