/ ** /
の#include <cstdioを>
する#include <CStringの>
する#include <cmath>
の#include <CCTYPE>
の#include <iostreamの>
する#include <アルゴリズム>
の#include <地図>
の#include < 設定 >
の#include <ベクトル>
#含める < 文字列 >
の#include <スタック>
の#include <キュー>
typedefの長い 長いLLを。
符号なしのtypedef 長い 長いULL。
使用して 名前空間はstdを、
リターン(LL)はsqrt(N)* SQRT(n)の== N; }
CONST ダブル PI = ACOS( - 1.0)、ESP = 1E- 10 。
constの LL INF = 99999999999999 ;
CONST INT INF = 999999999、N = 5E4 + 24 。
INT T、N、W、[N]、C [N]。
チャー S [ 6 ]。
INT lowbit(INT X){ リターン(X& - X)。}
ボイド(追加int型 iは、INT {W)
しながら(iは= < n)を{
C [I]+ = W。
I + = lowbit(I)。
}
}
int型の和(int型I){
int型の和= 0 。
一方、(I> 0 ){
合計 + = C [i]は、
I - = lowbit(I)。
}
戻り値の和。
}
int型のmain()
{
// freopenは( "in.txt"、 "R"、STDIN)。
// freopenは( "out.txtを"、 "W"、STDOUT)。
scanf関数(" %のD "、&T)。
以下のための(int型カセ= 1。カセ<= T。加瀬++ ){
scanf関数(" %のD "、&N)
// のmemset(0、はsizeof A)。memset(C、0、はsizeofのC)。
以下のために(int型 i = 0 ; iが<= N; iは++)[I] = C [I] = 0 ;
以下のために(int型私= 1 ; iが<= N; iが++){scanf関数(" %のD "、&W)。(wは、i)を追加します。}
のprintf(" ケース%のD:\ n " 、加瀬)。
// (S [0] == 'E')が続く場合。
//そうであれば(S [0] == 'A'){
// }
// そうであれば(S [0] == 'S')サブ();
// そうでない場合(S [0] == 'Q')クエリ();
int型のuを、V。
// getchar関数();
一方、(scanf関数(" %sの"、s)は、strcmpの(S、" 終了")!= 0 ){
// のprintf( "\ NS =%S \ n"は、単数または複数);
scanf関数(" %d個の%d個"、&U&V);
もし(strcmpの(S、" クエリ""和(V) -和(U - 1 ));
場合(strcmpの(S、" 追加")== 0を加える)(U、V);
場合(strcmpの(S、" サブ")== 0)追加(U、 - V);
}
}
の戻り 0 ;
}
/ *
入力:
出力:
モデリング:
方法:
複雑さ:
要約:
* /
サンプル入力
1 10 1 2 3 4 5 6 7 8 9 10
クエリ1 3
3 6を追加
クエリ2 7
副10 2
6 3を追加
クエリ3 10
終わり
サンプル出力
ケース1:
6
33
59