[BZOJ1640]=[BZOJ1692][Usaco2007 Dec]队列变换

原题地址

沙茶贪心,然而脑残怒WA了一发…

AC code:

#include <cstdio>
#include <cstring>
const int N=30010;
const int MD=80;
int  n,L,R,cnt;
char s[N],t1[N],t2[N];

int main(){
    scanf("%d\n",&n);
    L=1;R=n;
    for(int i=1;i<=n;i++) scanf("%c\n",&s[i]);
    while(L<=R){
        if(s[L]<s[R]){
            printf("%c",s[L++]);
            if(!(++cnt%MD)) printf("\n");
        }
        else if(s[R]<s[L]){
            printf("%c",s[R--]);
            if(!(++cnt%MD)) printf("\n");
        }
        else{
            int  i,j;
            bool flag=0;
            for(i=L,j=R;i<j&&s[i]==s[j];i++,j--) ;
            if(s[i]<s[j]) flag=1;
            if(flag){
                for(i=L;i<=n&&s[i]==s[L];i++){
                    printf("%c",s[i]);
                    if(!(++cnt%MD)) printf("\n");
                }
                L=i;
            }
            else{
                for(i=R;i>=1&&s[i]==s[R];i--){
                    printf("%c",s[i]);
                    if(!(++cnt%MD)) printf("\n");
                }
                R=i;
            }
        }
    }

    return 0;
}

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页