记录编号 137463 评测结果 AAAAAAAAAA
题目名称 [RQNOJ 165] FBI序列 最终得分 100
用户昵称 GravatarVincent 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2014-11-04 20:24:30 内存使用 0.27 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
#define MAXN 2010
#define lowbit(x) (x&(-x))
#define F 0
#define B 1
using namespace std;

int a[2][MAXN]={0},n,ans=0;
char s[MAXN];

int sum(int x,int i){
    int ret=0;
    while (x>0){
        ret += a[i][x];
        x -= lowbit(x);
    }
    return ret;
}

void add(int x,int d,int i){
    while (x<=n){
        a[i][x]+=d;
        x += lowbit(x);
    }
}

int main(){
    freopen("fbi.in","r",stdin);
    freopen("fbi.out","w",stdout);
    memset(s,0,sizeof(s));
    scanf ("%s",s+1);
    n=strlen(s+1);
    for (int i=1; i<=n; i++){
        if ( s[i]=='F' )
            add(i,1,F);
        else if ( s[i]=='B' )
            add(i,sum(i-1,F),B);
        else if ( s[i]=='I' ){
            ans += sum(i-1,B);
        }
    }
    printf("%d\n",ans);
    return 0;
}