fork download
  1.  
  2.  
  3. import java.util.Scanner;
  4.  
  5.  
  6. public class Main {
  7.  
  8.  
  9. private static final Scanner scanner = new Scanner(System.in);
  10.  
  11.  
  12. private static class Person implements Cloneable {
  13.  
  14. public String name;
  15. public double h;
  16. public double w;
  17. public double bmi;
  18. public Person next;
  19.  
  20. @Override
  21. public Person clone() {
  22.  
  23. Person p = new Person();
  24. p.name = name;
  25. p.h = h;
  26. p.w = w;
  27. p.bmi = bmi;
  28. p.next = next;
  29.  
  30. return p;
  31. }
  32. };
  33.  
  34.  
  35. public static void main(String[] args) {
  36.  
  37. Person list = null;
  38. Person t = new Person();
  39.  
  40. while (true) {
  41.  
  42. t.name = scanner.next();
  43.  
  44. // 名前の 1 文字目が 0 なら処理終了
  45. if(t.name.charAt(0) == '0') {
  46. break;
  47. }
  48.  
  49. t.h = scanner.nextDouble();
  50. t.w = scanner.nextDouble();
  51. t.bmi = t.w / ((t.h / 100) * (t.h / 100));
  52.  
  53. t.next = null;
  54.  
  55. list = add(list, t);
  56. }
  57.  
  58. output(list);
  59. pfree(list);
  60.  
  61. System.exit(0);
  62. }
  63.  
  64.  
  65. /**
  66. * @return リストの先頭
  67. */
  68. private static Person add(Person plist, Person newt) {
  69.  
  70. Person p = plist;
  71. Person q = null;
  72. Person r;
  73.  
  74. while (p != null) {
  75.  
  76. if(newt.bmi < p.bmi) {
  77. break;
  78. }
  79.  
  80. q = p;
  81. p = p.next;
  82. }
  83.  
  84. r = newt.clone();
  85. r.next = p;
  86.  
  87. if (q != null) {
  88. q.next = r;
  89. } else {
  90. plist = r;
  91. }
  92.  
  93. return plist;
  94. }
  95.  
  96.  
  97. private static void output(Person p) {
  98.  
  99. while(true) {
  100.  
  101. if(p == null) {
  102. break;
  103. }
  104.  
  105. System.out.printf(" BMI > %.1f ", p.bmi);
  106. System.out.printf(" 身長[cm] > %.1f ", p.h);
  107. System.out.printf(" 体重[kg] > %.1f ", p.w);
  108. System.out.printf(" 名前 > %s.%n", p.name);
  109.  
  110. p = p.next;
  111. }
  112. }
  113.  
  114.  
  115. private static void pfree(Person p) {
  116.  
  117. // nothing to do.
  118. }
  119. }
  120.  
Success #stdin #stdout 0.23s 50756KB
stdin
ああああ 100.0 60.0
いいいい 100.0 50.0
うううう 100.0 70.0
0
stdout
 BMI > 50.0  身長[cm] > 100.0  体重[kg] > 50.0  名前 > いいいい.
 BMI > 60.0  身長[cm] > 100.0  体重[kg] > 60.0  名前 > ああああ.
 BMI > 70.0  身長[cm] > 100.0  体重[kg] > 70.0  名前 > うううう.