#include <stdio.h>

#define N 3

struct student {
    int id;    /* 学籍番号 */
    int eng;   /* 英語の成績 */
    int math;  /* 数学の成績 */
    int sci;   /* 理科の成績 */
    int total; /* 合計点（追加箇所） */
};


void swap(struct student *p1, struct student *p2) {
    struct student temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}


void printSeiseki(struct student s[]) {
    int i;
    for (i = 0; i < N; i++) {
        
        printf("%7d %5d %5d %5d %10d\n", s[i].id, s[i].eng, s[i].math, s[i].sci, s[i].total);
    }
}

int main() {
    int i, j;
    struct student s[N] = {
        {17001, 60, 100, 20},
        {17002, 90, 40, 80},
        {17003, 20, 30, 50}
    };

    
    for (i = 0; i < N; i++) {
        s[i].total = s[i].eng + s[i].math + s[i].sci;
    }

    /* ソート（totalの昇順に書き換え、swapの呼び出し方を変更） */
    for (i = 1; i < N; i++) {
        for (j = 0; j < N - i; j++) {
            
            if (s[j].total > s[j + 1].total) {
                
                swap(&s[j], &s[j + 1]);
            }
        }
    }

    /* 成績のプリント */
    printSeiseki(s);

    return 0;
}