#include <stdio.h>
#define N 30
typedef struct seito
{
    int num;
    char lname[20];
    char fname[20];
    int point;
} seito;


int main(void)
{
    seito d[N], t;
    char buf[100];
    FILE *fp = fopen("seito.dat", "r");
    int cnt = 0, i = 0, j, cmpCnt = 0;
    while (fgets(buf, 100, fp) != NULL)
    {
        sscanf(buf, "%d %s %s %d", &d[i].num, d[i].lname, d[i].fname, &d[i].point);
        i++;
    }
    cnt = i;
    for (i = 1; i < cnt; i++)
    {
        t = d[i];
        cmpCnt++;
        if (d[i - 1].point < t.point)
        {
            j = i;
            do
            {
                d[j] = d[j - 1];
                j--;
                cmpCnt++;
            }
            while (j > 0 && d[j - 1].point < t.point);
            d[j] = t;
        }
    }
    printf("番号  氏名                   得点\n");
    for (int i = 0; i < cnt; ++i)
    {
        printf("%4d  %-10s %-10s %4d\n", d[i].num, d[i].lname, d[i].fname, d[i].point);
    }
    printf("整列の為の比較回数=%d回\n", cmpCnt);
    return 0;
}
