#include #include #include #include #include #include #include using namespace std; #define ll long long const int maxn=(5e6+10)*2; /// /** 线段树->麻烦 树状数组 求1-n的和 不断二分 **/ int a[maxn],f[maxn],number,n,l,r,mid; void modify(int i) { while (i<=number) { f[i]++; i+=i&-i; } } int cal(int i) { int sum=0; while (i) { sum+=f[i]; i-=i&-i; } return sum; } int main() { int op,x,i; scanf("%d",&n); number=n; while (n--) { scanf("%d%d",&op,&x); if (op==1) { if (a[x]==0) { a[x]=1; modify(x); } } else { l=1,r=number; while (l<=r) { mid=(l+r)>>1; // if (cal(mid)==mid+(a[mid]-1)*(mid>=x)) // if (judge()) if ((mid>=x && cal(mid)==mid+(a[x]-1)) || (mid=x && cal(mid)==mid+(a[x]-1)) || (mid