Tính điểm thi lập trình


Submit solution

Points: 1
Time limit: 1.0s
Memory limit: 977M

Author:
Problem type

Có n sinh viên tham gia thi lập trình giải 5 bài có tên lần lượt là A,B,C,D,E có các hệ số tính điểm là

Bài A hệ số 1

Bài B hệ số 2

Bài C hệ số 3

Bài D hệ số 4

Bài E hệ số 5

Khi hệ thống tổng hợp lại thì dữ liệu có 6 cột gồm TEN, A, B, C, D, E không may mắn là các cột chưa chắc đã sắp xếp theo thứ tự như vậy mà có thể đảo đi lung tung các cột

Bạn hãy tính điểm của những người tham gia biết rằng điểm của mỗi người làm mỗi bài là một số nguyên có giá trị trong đoạn [0,10] in ra điểm của từng người với danh sách tên sắp tăng dần theo từ điển

Input

Dòng đầu chứa số nguyên dương n là số người tham gia cuộc thi 5<=n<=100

Dòng tiếp theo là cột tiêu đề sẽ gồm TEN, A, B, C, D, E nhưng thứ tự các cột có thể hoán đổi lung tung

n dòng tiếp theo mỗi dòng là tên của từng người tham gia cuộc thi là một xâu không chứa khoảng trống và điểm là các số nguyên không âm không vượt quá 10

Output

Danh sách sinh viên sắp xếp theo tên tăng dần kèm theo là điểm của từng người

Ví dụ 1

Input

13
C   D   A   TEN B   E
3   6   8   Nam 1   1
10  6   0   Mai 10  1
7   4   6   Minh    6   3
6   4   8   Lan 0   9
1   1   6   Nga 2   3
7   2   9   Bac 2   2
2   2   1   Phuong  8   0
10  0   4   Tuan    2   7
5   0   10  Dat 9   5
10  5   10  Bang    0   3
3   7   2   Hoa 1   0
2   0   7   Ha  6   10
5   9   0   Lam 1   10

Output

Bac 52
Bang 75
Dat 68
Ha 75
Hoa 41
Lam 103
Lan 87
Mai 79
Minh 70
Nam 48
Nga 32
Phuong 31
Tuan 73

Ví dụ 2

Input

13
A   E   D   B   C   TEN
5   7   2   2   5   Nam
5   3   6   6   6   Mai
1   5   6   5   1   Minh
0   10  2   1   7   Lan
1   7   10  9   10  Nga
1   8   8   5   1   Bac
9   2   6   1   7   Phuong
6   1   3   6   8   Tuan
5   1   0   2   4   Dat
8   10  6   3   10  Bang
9   5   7   5   5   Hoa
6   8   1   3   2   Ha
5   4   8   2   0   Lam

Output

Bac 86
Bang 118
Dat 26
Ha 62
Hoa 87
Lam 61
Lan 81
Mai 74
Minh 63
Nam 67
Nga 124
Phuong 66
Tuan 59
tichpx

Comments


  • 0
    TICHPX  commented on Jan. 22, 2019, 10:49 p.m.

    Code tham khảo C

    #include<stdio.h>
    #include<string.h>
    typedef struct
    {
        char ten[30];
        int diem;
    }sv;
    int main()
    {
        int n;
        int Heso[100];
        Heso['A']=1;Heso['B']=2;Heso['C']=3;Heso['D']=4;Heso['E']=5;
        char tittle[7][10];
        scanf("%d",&n);
        sv S[n+1];
        for(int i=0;i<6;i++) scanf("%s",tittle[i]);
        for(int j=0;j<n;j++)
        {
            int x,d=0;
            for(int i=0;i<6;i++)
            if(strcmp(tittle[i],"TEN")==0) scanf("%s",S[j].ten);
            else
            {
                scanf("%d",&x);
                d+=x*Heso[tittle[i][0]];
            }   
            S[j].diem=d;
        }
        for(int i=0;i<n;i++)
        {
            for(int j=i+1;j<n;j++)
            if(strcmp(S[j].ten,S[i].ten)<0)
            {
                sv tg=S[i];
                S[i]=S[j];
                S[j]=tg;
            }
            printf("%s %d\n",S[i].ten,S[i].diem);
        }
    }

  • 0
    Le_Quang_Tho  commented on Jan. 22, 2019, 1:03 p.m.

    Thầy ơi ko có code C ạ @.@


    • -1
      cotyey  commented on Jan. 22, 2019, 8:28 p.m.

      A có code c++ thui hix

       #include <iostream>
       #include <string>
       #include <algorithm>
       using namespace std;
      
       string mp[6];
      
       struct sinhvien
      {
          string ten;
          int diem;
      
          sinhvien(){
              ten = "";
              diem = 0;
          }
      
          sinhvien(string s, int d){
              ten = s;
              diem = d;
          }
      };
      
      sinhvien a[105];
      
      int to_int(string s){
          int res = 0;
          for(char c : s) res = res * 10 + c - '0';
          return res;
      }
      
      string s, tmp;
      
      bool cmp(sinhvien s1, sinhvien s2){
          return s1.ten < s2.ten;
      }
      
      int main() {
          ios::sync_with_stdio(0);
          cin.tie(0);
          //freopen("in.txt", "r", stdin);
          int n; cin >> n;
          for(int i = 0; i < 6; ++i){
              cin >> s;
              mp[i] = s;
          }
      
          for(int nn = 0; nn < n; ++nn){
              int d = 0;
              for(int i = 0; i < 6; ++i){
                  cin >> s;
                  if(mp[i] == "TEN") tmp = s;
                  else d += (mp[i][0] - 'A' + 1) * to_int(s);
              }
              a[nn] = sinhvien(tmp, d); 
          }
          sort(a, a + n, cmp);
          for(int i = 0; i < n; ++i) cout << a[i].ten << " " << a[i].diem << '\n';
          return 0;
      }

  • -1
    TICHPX  commented on Jan. 20, 2019, 11:00 a.m.

    Code tham khảo Python 3

    from collections import namedtuple
    n=int(input())
    sv=namedtuple('sv',input()+" TD")
    D=[]
    for i in range(n):
        z=input()+" 0"
        s=sv._make(z.split())
        s=s._replace(TD=int(s.A)+int(s.B)*2+int(s.C)*3+int(s.D)*4+int(s.E)*5)
        D.append(s)
    
    D.sort(key = lambda x: x.TEN)
    for x in D: print(x.TEN, x.TD)