import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
public class ms extends java.applet.Applet{
  Color col1,col2,col3,col4;
  int N,taka,haba;
  int ve,vek;
  String takaS,habaS,NS;
  double takad,habad,Nd;
  double eps=1,eps0=0.000001,sp,gpx,gpy;
  double xx1d,yy1d,wsd;
  double gkx,gky,gkn,ukx,uky;
  int xx1i,yy1i;
  int k;
  double x1d[]=new double[100];
  double y1d[]=new double[100];
  double w1d[]=new double[100];
  double dis[]=new double[100];
  int x1i[]=new int[100];
  int y1i[]=new int[100];
  int w1i[]=new int[100];
  String w1S[]=new String[100];
  public double dou(String dous){
    double dou1;
    dou1 = (Double.valueOf(dous)).doubleValue();
    return dou1;
  }
  public double rand(){
    double rand1;
    rand1=Math.random();
    return rand1;
  }
  public void init(){
    col1=Color.yellow;
    col2=Color.white;
    col3=Color.pink;
    col4=Color.black;
    takaS=getParameter("takap");
    habaS=getParameter("habap");
    NS=getParameter("Np");
    habad=dou(habaS);
    takad=dou(takaS);
    Nd=dou(NS);
    if(Nd==999){
      Nd=4+rand()*96;
    }
    haba=(int)habad;
    taka=(int)takad;
    N=(int)Nd;
  }
  public double jou(double a,double b){
    double jou1;
    jou1=Math.pow(a,b);
    return jou1;
  }
  public double dp(double xz1,double yz1,double xz2,double yz2){
    double dpdp;
    dpdp=jou(jou(xz1-xz2,2)+jou(yz1-yz2,2),0.5);
    return dpdp;
  }
  public void paint(java.awt.Graphics g){
    g.setColor(col4);
    g.fillRect(0,0,haba,taka);
    g.setColor(col1);
    xx1d=0;yy1d=0;wsd=0;
    g.drawString("m="+N,15,15);
    for(k=0;k<N;k++){
      x1d[k]=rand()*(haba-30)+15;
      y1d[k]=rand()*(taka-30)+15;
      w1d[k]=rand()*(99)+1;
      x1i[k]=(int)(x1d[k]+0.5);
      y1i[k]=(int)(y1d[k]+0.5);
      w1i[k]=(int)(w1d[k]+0.5);
      w1S[k]=""+w1i[k];
      g.fillOval(x1i[k]-3,y1i[k]-3,6,6);
      g.drawString(w1S[k],x1i[k]-3,y1i[k]-3);
      xx1d=xx1d+x1d[k]*w1d[k];
      yy1d=yy1d+y1d[k]*w1d[k];
      wsd=wsd+w1d[k];
    }
    xx1d=xx1d/wsd;yy1d=yy1d/wsd;
    while(eps>eps0){
      ve=0;vek=0;
      for(k=0;k<N;k++){
        dis[k]=dp(xx1d,yy1d,x1d[k],y1d[k]);
        if(dis[k]<eps0){
          ve=1;vek=k;
        }
      }
      sp=0;gpx=0;gpy=0;
      for(k=0;k<N;k++){
        if(ve==0 || vek!=k){
          sp=sp+w1d[k]/dis[k];
          gpx=gpx+w1d[k]*(xx1d-x1d[k])/dis[k];
          gpy=gpy+w1d[k]*(yy1d-y1d[k])/dis[k];
        }
      }//next k
      if(ve==1){
        gkx=gpx;gky=gpy;
        gkn=dp(gkx,gky,0,0);
        ukx=gkx/gkn;uky=gky/gkn;
        if(gkn>w1d[vek]){
          gpx=gkx-w1d[vek]*ukx;gpy=gky-w1d[vek]*uky;
        }
        else{
          gpx=0;gpy=0;
        }
      }//if ve==1
      xx1d=xx1d-gpx/sp;yy1d=yy1d-gpy/sp;
      eps=dp(0,0,gpx,gpy);
    }//wend
    xx1i=(int)(xx1d+0.5);yy1i=(int)(yy1d+0.5);
    g.setColor(col2);
    for(k=0;k<N;k++){
      g.drawLine(xx1i,yy1i,x1i[k],y1i[k]);
    }
    g.setColor(col3);
    g.fillRect(xx1i-2,yy1i-2,4,4);
  }
}