#include<stdio.h>
#define n 7
#define m 12

int main()
{
  char kamoku[m][n] = {"科目", "国語", "数学", "理科", "社会", "英語", "合計"};
  char namae[m][n] = {"科目", "太郎", "次郎", "三郎", "四郎", "五郎", "花子", "春子", "夏子", "秋子", "冬子", "平均"};
  int i, j, k;
  // printf("%d %d\n", sizeof(kamoku),sizeof(kamoku[0]));
  for (i = 0; i < m; i++) {}
  double seiseki[m][m] = {{0, 0, 0, 0, 0, 0}, {0, 74, 93, 80, 73, 99}, {0, 78, 82, 78, 82, 74}, {0, 94, 68, 61, 71, 87}, {0, 82, 76, 96, 68, 78}, {0, 74, 79, 70, 61, 78}, {0, 89, 70, 70, 60, 72}, {0, 84, 96, 65, 75, 85}, {0, 91, 83, 89, 66, 75}, {0, 80, 83, 75, 71, 64}, {0, 86, 96, 93, 70, 62}};
  for (i = 0; i < m + 1; i++) {
    for (j = 0; j < n - 1; j++) {}
  }
  printf("┌───┬──┬──┬──┬──┬──┬───┐\n");//一行目,科目名が３文字なのでそれぞれにスペースを入れて罫線をそろえる!
  printf("│");//二行目
  printf("科目名", kamoku[0]);
  for (i = 1; i < n - 1; ++i) {
    printf("│%s", kamoku[i]);
  }
  printf("│ %s │\n", kamoku[6]);
  printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目
  for (i = 1; i < 11; i++) { //成績表示
    printf("│　%s", namae[i]);
    for (j = 1; j < n - 1; j++) {
      printf("│%4.0f", seiseki[i][j]);
      seiseki[i][0] += seiseki[i][j]; //横計
    }
    printf("│%6.0f│\n", seiseki[i][0]);
    printf("├───┼──┼──┼──┼──┼──┼───┤\n");//三行目をコピー
  }
  printf("│　%s", namae[11]);
  for (j = 1; j < n - 1; j++) {
    for (i = 1; i < m - 1; i++) {
      seiseki[0][j] += seiseki[i][j]; //縦計
    }
    printf("│%4.1f", seiseki[0][j] / (m - 2)); //科目平均
    seiseki[0][0] += seiseki[0][j]; //総点
  }
  printf("│%6.1f│\n", seiseki[0][0] / (m - 2)); //合計平均

  printf("└───┴──┴──┴──┴──┴──┴───┘\n");


  for (i = 1; i <= 5; ++i) {
    printf("\n%s\n順位　名前　成績\n", kamoku[i]);
    int min = seiseki[1][i];
    int max = min;
    for (j = 1; j < m - 1; ++j) {
      if (min > seiseki[j][i])min = seiseki[j][i];
      if (max < seiseki[j][i])max = seiseki[j][i];
    }
    int juni = 0;
    for (j = max; j >= min; --j)
      for (k = 1; k < m - 1; ++k)
        if (seiseki[k][i] == j)printf("%2d   %6s %3d\n", ++juni, namae[k], j);
  }
  return 0;
}
