#include<bits/stdc++.h>

#define EQ(a,b) (abs((a)-(b)) < EPS)
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define all(a) (a).begin(),(a).end()
#define fs first
#define sc second
#define pb push_back
#define sz size()

using namespace std;
typedef double D;
typedef complex<D> P;
typedef pair<P,P> L;
typedef vector<P> Poly;

const D EPS = 1e-8;

inline pair<P,P> normal(P p){return make_pair(p*P(0,1),p*P(0,-1));}
inline D dot(P x, P y){return real(conj(x)*y);}
inline D cross(P x, P y){return imag(conj(x)*y);}

int ccw(P a,P b,P c){
  b -= a;c -= a;
  if (cross(b,c)>EPS) return 1;   //counter clockwise
  if (cross(b,c)<-EPS) return -1; //clockwise
  if (dot(b, c)<-EPS) return 2;   //c--a--b on line
  if (abs(b)+EPS<abs(c)) return -2;   //a--b--c on line
  return 0;                       //on segment
}

inline P line_cp(L a,L b){
  return a.fs+(a.sc-a.fs)*cross(b.sc-b.fs,b.fs-a.fs)/cross(b.sc-b.fs,a.sc-a.fs);
}

inline Poly convex_cut(Poly p,L l){
  Poly res;
  rep(i,p.sz){
    int nxt = (i+1)%p.sz;
    if(ccw(l.fs,l.sc,p[i]) != -1)res.pb(p[i]);
    if(ccw(l.fs,l.sc,p[i]) * ccw(l.fs,l.sc,p[nxt]) < 0){
      res.pb( line_cp(l, L(p[i],p[nxt]) ) );
    }
  }
  return res;
}

inline vector<Poly> voronoi_partition(Poly p, vector<P> vp){
  vector<Poly> res(vp.sz);
  rep(i,vp.sz){
    res[i] = p;
    rep(j,vp.sz){
      if(i!=j){
	P mid = (vp[i] + vp[j])/2.0;
	L b = L(mid, mid + normal(vp[j]-vp[i]).fs);
	res[i] = convex_cut(res[i],b);
      }
    }
  }
  return res;
}

inline D area(Poly p){
  if(p.sz<3)return 0;
  D res = cross(p[p.sz-1],p[0]);
  rep(i,p.sz-1)res += cross(p[i],p[i+1]);
  return res/2;
}

int main(){
  int n,m;
  while(cin >> n >> m){
    if(n==0 && m==0)break;

    Poly island(n);
    rep(i,n){
      int x,y;
      cin >> x >> y;
      island[i] = P(x,y);
    }

    vector<P> castle(m);
    rep(i,m){
      int x,y;
      cin >> x >> y;
      castle[i] = P(x,y);
    }

    vector<Poly> ans = voronoi_partition(island,castle);
    rep(i,ans.sz){
      cout << fixed << setprecision(9) << area(ans[i]) << endl;
    }
  }
}