Untitled

 avatar
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