アットウィキロゴ

くら

class pro{

int s,sx,s1,s2,sx1,sx2,h;
double[][] mat=new double[101][101];
int[] gr=new int[101];
int[] rank=new int[101];
int[][] route=new int[101][101];
int[] a=new int[101];
int[] px=new int[100];
double mx,minmx;
int t,minr,z,r;

public static void main(String[] args){
pro test=new pro();
}

pro(){


for(s=1;s<101;s++){
for(sx=1;sx<101;sx++){
mat[s][sx]=s*sx;
}
}


for(s=1;s<101;s++){
gr[s]=s;
}

for(s=1;s<101;s++){
route[100][s]=gr[s];
}


for(t=1;t<101;t++){
minmx=9999;
sx1=0;
sx2=0;
for(s1=1;s1<101;s1++){
for(s2=1;s2<101;s2++){
mx=met(s1,s2);
if(s1==s2)mx=9999;
if(mx<minmx)sx1=s1;
if(mx<minmx)sx2=s2;
if(mx<minmx)minmx=mx;
}
}

for(s=1;s<101;s++){
if(gr[s]==sx2)gr[s]=sx1;
}

for(s=1;s<101;s++){
route[100-t][s]=gr[s];
}


}

for(r=1;r<101;r++){


for(s=1;s<101;s++){
a[s]=100;
if(rank[s]>0)a[s]=0;
}


t=1;
z=100;
while(z>50){
minr=500;
for(s=1;s<101;s++){
h=0;
if(route[t][s]<minr)h=h+1;
if(a[s]>50)h=h+1;
if(h==2)minr=route[t][s];
}

for(s=1;s<101;s++){
if(route[t][s]>minr)a[s]=0;
}

h=0;
for(s=1;s<101;s++){
if(a[s]>50)h=h+1;
}

if(h<2)z=0;

t=t+1;

}

for(s=1;s<101;s++){
if(a[s]>50)rank[s]=r;
}

}



for(s=1;s<101;s++){
System.out.println(rank[s]);
}








}

double met(int s1,int s2){
int s,sx,h;
double mx,minmx;
minmx=9999;
for(s=1;s<101;s++){
for(sx=1;sx<101;sx++){
h=0;
mx=9999;
if(gr[s]==s1)h=h+1;
if(gr[sx]==s2)h=h+1;
if(h==2)mx=mat[s][sx];
if(mx<minmx)minmx=mx;
}
}
return minmx;
}
}        
最終更新:2011年06月23日 10:50