2013年12月31日 星期二

[POI] 18th stage I - pB Lollipop


#include<stdio.h>
#include<string.h>
char s[1000005];
int add[3000005]={0},is[3000005]={0},one[3000005]={0};
int main(){
    int n,m,i,j,x,y,k=10,X=0,Y=0,a=-1,b=-1,L,R;
    scanf("%d%d%s",&n,&m,&s[1]);
    for(i=1;i<=n;i++){
        if(s[i]=='T'){
            add[i]=add[i-1]+2;
            is[add[i]]=i;
            a=i;
        }
        else{
            add[i]=add[i-1]+1;
            is[add[i]]=i;
            b=i;
        }
    }
    for(i=n;i>=0;i--){
        if(s[i]=='W') k=i;
        one[i]=k;
    }
    for(i=0;i<m;i++){
        scanf("%d",&k);
        if(is[k]!=0) printf("%d %d\n",1,is[k]);
        else{
            X=1,Y=is[k-1];
            if(one[1]==1) L=2;
            else L=one[1];
            if(is[add[L-1]+k]) printf("%d %d\n",L,is[add[L-1]+k]);
            else{
                L++;
                if(is[add[L-1]+k]) printf("%d %d\n",L,is[add[L-1]+k]);
                else{
                    R=one[Y+1];
                    if(add[R]-k>=1 && is[add[R]-k]) printf("%d %d\n",is[add[R]-k]+1,R);
                    else{
                        R--;
                        if(add[R]-k>=1 && is[add[R]-k]) printf("%d %d\n",is[add[R]-k]+1,R);
                        else puts("NIE");
                    }
                }

            }
        }
    }
}

沒有留言:

張貼留言