一、hdu4325
#include<bits/stdc++.h>
using namespace std;
const int N=100000+10;
struct Node{int b,e;}A[N];
int _,n,m,a[N*4],B[N],z[N],c;
int lowbit(int x){return x&-x;}
void add(int x,int y){for(int i=x;i<=c;i+=lowbit(i))z[i]+=y;}
int ask(int x){int y=0;while(x){y+=z[x];x-=lowbit(x);}return y;}
int main(){
scanf("%d",&_);
for(int cas=1;cas<=_;cas++){
scanf("%d%d",&n,&m);
memset(z,0,sizeof(z));
c=0;
for(int i=1;i<=n;i++){
scanf("%d%d",&A[i].b,&A[i].e);
a[++c]=A[i].b;a[++c]=A[i].e;
}
for(int i=1;i<=m;i++){scanf("%d",&B[i]);a[++c]=B[i];}
sort(a+1,a+c+1);//排序
c=unique(a+1,a+c+1)-a-1;//去重
for(int i=1;i<=n;i++){
int x=lower_bound(a+1,a+c+1,A[i].b)-a;
int y=lower_bound(a+1,a+c+1,A[i].e)-a;
add(x,1);add(y+1,-1);
}
printf("Case #%d:\n",cas);
for(int i=1;i<=m;i++){
int t=lower_bound(a+1,a+c+1,B[i])-a;
printf("%d\n",ask(t));
}
}
return 0;
}