Untitled
unknown
plain_text
3 months ago
958 B
6
Indexable
void function4(){ long int n,q; scanf("%ld %ld",&n,&q); long int arr[n],left[n],right[n]; for (int i = 0; i < n; i++){ scanf("%ld",&arr[i]); } right[n-1]=n-1; left[0]=0; for (int i = 1; i < n; i++){ if(arr[i]<=arr[i-1]){ long int j=left[i-1]; while(1){ if(j-1<0 || arr[j-1]<arr[i]) break; j=left[j-1]; } left[i]=j; } else{ left[i]=i; } if(arr[n-i-1]<=arr[n-i]){ int j=right[n-i]; while(1){ if(j+1>n-1 || arr[j+1]<arr[n-i-1]) break; j=right[j+1]; } right[n-i-1]=j; } else{ right[n-i-1]=n-i-1; } } for (int i = 0; i < n; i++){ right[i]=right[i]-left[i]+1; printf("%d ",right[i]); } }
Editor is loading...
Leave a Comment