树状数组二分
#include<bits/stdc++.h>//树状数组二分 using namespace std; int q,b,s,t[1000],k,sum1[1000],sum2[1000],n=10; void add(int p,int k) { for(int i=p;i<=n;i+=i&-i) t[i]+=k; } int find(int k) { int l=1,r=n,mid; for(int i=5;i>=0;i--) { mid=l+(1<<i)-1; if(mid>r) continue; if(t[mid]>k) r=mid; else l=mid+1,k-=t[mid]; } return l; } int main() { cin>>q; while(q--) { cin>>b; if(b==1) { cin>>s>>k; add(s,k); } else { cin>>k; cout<<find(k); } } return 0; }