#include #include #include using namespace std; struct point { int x,y,flag,tag; double c; }p[141000]; struct tree { double c; int num; }T1[141000],T2[21000]; int x[141000],y[141000],xnum,ynum; bool cmp(point a,point b) { if(a.x!=b.x) return a.x0;i-=Lowbit(i)) { T2[p[now].flag].c=T2[p[now].flag].c+T1[i].c*p[now].tag; T2[p[now].flag].num=T2[p[now].flag].num+T1[i].num*p[now].tag; } } int BiSearch(int now) { int l=0,r=ynum-1,mid; while(l<=r) { mid=(l+r)/2; if(y[mid]>now) r=mid-1; else l=mid+1; } return l; } int main() { int n,m,i,j,x1,y1,x2,y2; while(scanf("%d%d",&n,&m)!=EOF) { for(xnum=0,ynum=0,i=0;i