#include<bits/stdc++.h>
#define LL long long
#define ls(o) (o << 1)
#define rs(o) (o << 1 | 1)
#define mid ((l + r) >> 1)
using namespace std;
/*Grievous Lady*/
template <typename T> void read(T & t){
t = 0;int f = 1;char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-')f =- 1;ch = getchar();}
do{t = t * 10 + ch - '0';ch = getchar();}while(ch >= '0' && ch <= '9');t *= f;
}
const int kato = 2e5 + 1;
int n , m;
int a[kato];
struct tree{
protected:
LL sum[kato << 2] , tag[kato << 2];
inline void up(int o){
sum[o] = sum[ls(o)] + sum[rs(o)];
tag[o] = tag[ls(o)] + tag[rs(o)];
}
public:
inline void build(int o , int l , int r){
if(l == r){
// read(a[l]);
sum[o] = a[l];
if(a[l] != 0){
tag[o] ++;
}
return;
}
build(ls(o) , l , mid) , build(rs(o) , mid + 1 , r);
up(o);
}
inline void add(int o , int l , int r , int x , int val){
if(l == r){
sum[o] = val , tag[o] = 1;
return;
}
if(x <= mid){
add(ls(o) , l , mid , x , val);
}
else{
add(rs(o) , mid + 1 , r , x , val);
}
up(o);
}
inline void Modify(int o , int l , int r , int x , int val){
if(l == r){
sum[o] -= val;
return;
}
if(x <= mid){
Modify(ls(o) , l , mid , x , val);
}
else{
Modify(rs(o) , mid + 1 , r , x , val);
}
up(o);
}
inline void del(int o , int l , int r , int x){
if(l == r && x == tag[o]){
sum[o] = 0 , tag[o] --;
return;
}
if(x <= tag[ls(o)]){
del(ls(o) , l , mid , x);
}
else{
del(rs(o) , mid + 1 , r , x - tag[ls(o)]);
}
up(o);
}
inline LL ask(int o){
return sum[o];
}
}yuni;
char opt;
inline int Ame_(){
// freopen("a.in" , "r" , stdin);
// freopen("a.out" , "w" , stdout);
read(n);read(m);
for(int i = 1;i <= n;i ++){
read(a[i]);
}
yuni.build(1 , 1 , kato);
for(int x , y; m --> 0 ;){
cerr << m << ' ' << '\n';
// cin >> opt;
scanf("%c" , &opt);
if(opt == 'Q'){
printf("%lld\n" , yuni.ask(1));
}
if(opt == 'C'){
read(x);read(y);
yuni.Modify(1 , 1 , kato , x , y);
}
if(opt == 'I'){
read(x);read(y);
yuni.add(1 , 1 , kato , x , y);
}
if(opt == 'D'){
read(x);
yuni.del(1 , 1 , kato , x);
}
}
// fclose(stdin);
// fclose(stdout);
return 0;
}
int Ame__ = Ame_();
int main(){;}
对于此代码,本来cin是可以正常判定循环的,但是换成scanf之后会发现以下问题
9
15
8
7
6
13
5
4
3
19
2
1
0
15
对于m会什么都没有进行独自循环一个循环,想请教一下原因QAQ