
原题链接:https://www.luogu.org/problemnew/show/2562#sub
简单的递归题。记录一下前缀和然后二分求解就好。
参考代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 2000005
using namespace std;
int s[maxn];
int num;
void find(int l,int r){
if (s[r] - s[l-] == ){
printf("A");
return;
} if (s[r] - s[l-] == r - l + ){
printf("B");
return ;
}
printf("C");
int mid = (l + r) >> ;
find(l,mid);
find(mid+,r);
}
int main(){
while (){
char c = getchar();
if (c != '' && c != '')
break;
s[++num] = s[num-] + c - '';
}
find(,num);
return ;
}