敌兵布阵
#include<stdio.h> #include<stdlib.h> #include<string.h> int N,c[51100]; int lowbit(int x) { return x&-x; } void add(int x,int i) { while(i<=N) { c[i]+=x; i+=lowbit(i); } } int sum(int i) { int sum=0; while(i) { sum+=c[i]; i-=lowbit(i); } return sum; } int main() { int T,i,j,t,l=0; scanf("%d",&T); while(T--) { l++; int flag=1; memset(c,0,sizeof(c)); scanf("%d",&N); for(i=1;i<=N;i++) { scanf("%d",&t); add(t,i); } char ch[10];int m,n; while(scanf("%s",ch),ch[0]!='E')//刚开始的时侯的,我把这个与m,n
一起输入了,悲剧啊。。
输入end后硬是结束不了。。
{ scanf("%d%d",&m,&n); if(ch[0]=='A') add(n,m); else if(ch[0]=='S') add(-n,m); else if(ch[0]=='Q') { if(flag) printf("Case %d:\n",l),flag=0; printf("%d\n",sum(n)-sum(m-1)); } else if(ch[0]=='E') break; } } return 0; }
posted on 2011-05-02 15:03 more think, more gains 阅读(230) 评论(0) 编辑 收藏 举报