#include "stdafx.h"
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=11000000;
typedef long long ll;
//分块数组做法
const int sqrN=316;
int block[sqrN];
int table[maxn];
int findkth(int k){
int sum=0;
int idx=0;
while(sum+block[idx]<k)
sum+=block[idx++];
int num=idx*sqrN;
while(sum+table[num]<k)
sum+=table[num++];
return num;
}
//树状数组做法
int lowbit(int x){
return x&(-x);}
int c[maxn];
void update(int x,int v){
for(int i=x;i<maxn;i+=lowbit(i)){
c[i]+=v;}
}
int getsum(int x){
int sum=0;
for(int i=x;i>0;i-=lowbit(i)){
sum+=c[i];
}
return sum;
}
int findKth(int k){
int l=1,r=maxn,mid;
while(l<r){
mid=(l+r)/2;
if(getsum(mid)>=
#include "stdafx.h"#include&lt;cstdio&gt;#include&lt;iostream&gt;#include&lt;algorithm&gt;using namespace std;const int maxn=11000000;typedef long long ll;//分块数组做法const int sqrN=316;int bloc...