https://codeforces.com/contest/1896/problem/D
首先我们要发现一个性质就是
要是我们能凑出为S的 那一定能凑出S-2的
询问的时候和总的同奇偶就可以随便缩一下
要是不同奇偶我们就得找到最左最右的1来改变奇偶
用set维护1的位置即可
void solve(){
int n,q;cin>>n>>q;
vector<int>a(n+1);
set<int>st;
int sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]==1)st.insert(i);
sum+=a[i];
}
while(q--){
int op;cin>>op;
if(op==1){
int x;cin>>x;
if(x%2==sum%2){
if(sum>=x)YES
else NO
}else{
if(st.size()){
auto itl=*st.begin();
auto itr=*st.rbegin();
if(sum-1-(itl-1)*2>=x || sum-1-(n-itr)*2>=x){
YES
}else NO
}else NO
}
}else{
int pos,x;cin>>pos>>x;
sum-=a[pos];
if(a[pos]==1)st.erase(pos);
a[pos]=x;
sum+=a[pos];
if(a[pos]==1)st.insert(pos);
}
}
}