Professional Documents
Culture Documents
template<class T>
using ordered_set = tree<T, null_type,less<T>,
rb_tree_tag,tree_order_statistics_node_update> ;
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');
cerr.write(names, comma - names) << " : " << arg1<<" | ";
__f(comma+1, args...);
}
#else
#define trace(...) 1
#endif
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
/*/---------------------------Defines----------------------/*/
#define int long long
/*/-----------------------------Code begins----------------------------------/*/
int M;
void init(){
for(int i=1;i<=M;++i) {bit1[i]=0;bit2[i]=0;}
}
int A[N];
void solve(){
int n,q;
cin>>n>>q;
M = n;
init();
int mul = 1;
for(int i=1;i<=n;++i){
cin>>A[i];
mul *= -1;
upd_1(i,mul*i*A[i]);
upd_2(i,mul*A[i]);
}
int ans = 0;
for(int i=0;i<q;++i){
int l,r;
char x;
cin>>x>>l>>r;
if (x == 'Q'){
// trace(l,r,M);
ans += ans_query(l,r);
}
else{
int mul = (l&1)?-1:1;
int dif = r - A[l];
upd_1(l,mul*l*dif);
upd_2(l,mul*dif);
A[l] = r;
}
}
cout<<ans<<endl;
}
signed main(){
// Use "set_name".max_load_factor(0.25);"set_name".reserve(512); with unordered
set
// Or use gp_hash_table<X,null_type>
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
cout<<fixed<<setprecision(25);
int t;
cin>>t;
for(int i=1;i<=t;++i){
cout<<"Case #"<<i<<": ";
solve();
}
}