求任意区间里比x小的数的个数(树状数组)

题目变形:http://codeforces.com/contest/811/problem/B

题意:对任意区间排序,问你第x个位置上的数的位置是否发生变化

在得知n^2能过这个题我的内心是崩溃的.........


#include   
#include   
#include   
#include   
using namespace std;  
const int maxn=30005;  
int aa[maxn],bb[maxn];
int C[maxn],ans[maxn];  
int n,m;  
  
int lowbit(int x)  
{  
    return x&(-x);  
}  
  
int sum(int x)  
{  
    int ret=0;  
    while(x>0)  
    {  
        ret+=C[x];  
        x-=lowbit(x);  
    }  
    return ret;  
}  
  
void add(int x,int d)  
{  
    while(x<=n)  
    {  
        C[x]+=d;  
        x+=lowbit(x);  
    }  
}  
  
struct node  
{  
    int id,num;  
    bool operator < (const node &other) const  
    {  
        return num < other.num;  
    }  
}a[maxn];  
struct note  
{  
    int l,r,id,value;  
    bool operator < (const note &other)const  
    {  
        return value 




你可能感兴趣的:(树状数组)