Codeforces Round #306 (Div. 2)_A

来源:互联网 发布:淘宝联盟如何招代理 编辑:程序博客网 时间:2024/05/22 03:02

每日必水系列~

注意 ABACCCCAB 这类情况 

感觉自己做的有些麻烦 应该有简单的方法

#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAX = 100100;char data[MAX];int pos1[MAX / 2][2];int pos2[MAX / 2][2];void get_turn(char data[]){    int len = strlen(data);    for(int i = 0 ; i < len/2 ; i ++)    {        char tmp = data[i];        data[i] = data[len-1-i];        data[len-1-i] = tmp;    }}/**   0 1 2 3 4 5 6  len = 7  len - 1 - i   A B A A A B A   bug CCCCCCABACCCCCABC**/int main(){    while(~scanf("%s",data))    {        memset(pos1,0,sizeof(pos1));        memset(pos2,0,sizeof(pos2));        int len = strlen(data),flag1 = 0,flag2 = 0,num1 = 0;        for(int i = 0 ; i < len ; i ++)        {            if(data[i] == 'A')            {                if(data[i+1] == 'B')                {                    flag1 = 1;                    pos1[num1][0] = i;                    pos1[num1][1] = i+1;                    num1 ++;                }            }        }        get_turn(data);        int num2 = 0;        for(int i = 0 ; i < len ; i ++)        {            if(data[i] == 'A')            {                if(data[i+1] == 'B')                {                    flag2 = 1;                    pos2[num2][0] = len - i - 1;                    pos2[num2][1] = len - i - 2;                    num2 ++;                }            }        }        int flag3 = 0;        if(flag1 == 1 && flag2 == 1)        for(int i = 0 ; i < num1 ;i ++)        {            for(int j = 0 ; j < num2 ; j ++)            {                if(pos1[i][0] != pos2[j][0] && pos1[i][1] != pos2[j][1] )                {                    printf("YES\n");                    flag3 = 1;                    break;                }            }            if(flag3 == 1)                break;        }        if(flag3 == 0)            printf("NO\n");    }    return 0;}


0 0
原创粉丝点击