#include <stdio.h>
#include <stdlib.h>

void crdel(char *s)
{
    while (*s != '\n')s++;
    *s = '\0';
}

int main(void)
{
    char title[100], buf[100], infile[30], outfile[30], name[20];
    FILE *fpi, *fpo;
    int cnt, *total, *rank, w[5], i, j, number, min, max, tmp;

    printf("input file name = ");
    scanf("%s", infile);
    fpi = fopen(infile, "r");
    if (fpi == NULL)
    {
        printf("input file (%s) open error\n", infile);
        return 0;
    }

    printf("output file name = ");
    scanf("%s", outfile);
    fpo = fopen(outfile, "w");
    if (fpo == NULL)
    {
        printf("output file (%s) open error\n", outfile);
        return 0;
    }

    for (cnt = 0; fgets(buf, 100, fpi) ; cnt++);
    cnt--;
    total = (int *)calloc(sizeof(int) * cnt, 0);
    rank = (int *)calloc(sizeof(int) * cnt, 0);

    rewind(fpi);
    fgets(title, 100, fpi);
    for ( i = 0; i < cnt; ++i)
    {
        fgets(buf, 100, fpi);
        sscanf(buf, "%s %d %d %d %d %d %d %d", name, &number, w, w + 1, w + 2, w + 3, w + 4, w + 5);
        for ( j = 0; j < 5; ++j)
            total[i] += w[j];
    }

    min = total[0];
    max = total[0];
    for ( i = 1; i < cnt; ++i)
    {
        if (min > total[i])min = total[i];
        if (max < total[i])max = total[i];
    }

    tmp = 1;
    for ( i = min; i <= max; ++i)
        for ( j = 0; j < cnt; ++j)
            if (total[j] == i)
                rank[j] = tmp++;

    rewind(fpi);
    fgets(title, 100, fpi);
    crdel(title);
    fprintf(fpo, "%s rank\n", title);
    for ( i = 0; i < cnt; ++i)
    {
        fgets(buf, 100, fpi);
        crdel(buf);
        fprintf(fpo, "%s %d\n", buf, rank[i]);
    }

    return 0;
}
