Untitled
unknown
plain_text
9 months ago
958 B
7
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