2014年1月17日 星期五

[HOJ] 201 - TRAMPOLIN


#include<stdio.h>
char s[300005];
int arr[300005]={0},v[300005]={0},cnt[300005]={0};
int main(){
    int n,k,i,j,ans=0,p=0;
    scanf("%d%d",&n,&k);
    k--;
    for(i=0;i<n;i++)
        scanf("%d",&arr[i]);
    scanf("%s",s);
    for(i=0;i<n;i++)
    if(s[i]=='T'){
        v[i]=1;
        for(j=i-1;j>=0;j--){
            if(arr[j]<arr[j+1] || v[j]) break;
            v[j]=1;
        }
        for(j=i+1;j<n;j++){
            if(arr[j]<arr[j-1] || v[j]) break;
            v[j]=1;
        }
    }
    for(p=i=0;i<n;i++){
        if(v[i]==1){
            p=0;
            continue;
        }
        if(i && arr[i]<arr[i-1]) p=0;
        p++,cnt[i]=p;
    }
    for(p=0,i=n-1;i>=0;i--){
        if(v[i]==1){
            p=0;
            continue;
        }
        if(i && arr[i]<arr[i+1]) p=0;
        p++;
        if(p>cnt[i]) cnt[i]=p;
    }
    for(p=i=0;i<n;i++)
        if(v[i]==1)
            ans++;
        else if(cnt[i]>p)
            p=cnt[i];
    if(v[k]!=1){
        p=cnt[k];
        for(i=k-1;i>=0;i--){
            if(arr[i]!=arr[i+1]) break;
            if(cnt[i]>p) p=cnt[i];
        }
        for(i=k+1;i<n;i++){
            if(arr[i]!=arr[i-1]) break;
            if(cnt[i]>p) p=cnt[i];
        }
        printf("%d\n",p);
    }
    else printf("%d\n",ans+p);
}

沒有留言:

張貼留言