Sắp xếp danh sách sinh viên


Submit solution

Points: 2 (partial)
Time limit: 1.0s
Memory limit: 98M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho một danh sách sinh viên gồm Họ và tên, ngày/tháng/năm sinh, giới tính, bạn hãy đọc dữ liệu sinh viên theo cấu trúc như vậy sắp xếp danh sách theo ngày/tháng/năm sinh tăng dần trong trường hợp những người sinh cùng ngày tháng năm sinh thì giữ nguyên thứ tự ai đứng trước vẫn đứng trước trong danh sách.

Input

Một danh sách gồm nhiều sinh viên (số lượng sinh viên chưa biết trước nhưng không quá 2000) thông tin về mỗi sinh viên trên 1 dòng gồm Họ và tên được viết hoa Tiếng Việt không dấu, sau đó đến Ngày/Tháng/Năm sinh, Giới tính gồm NAM và NU

Output

Danh sách có cấu trúc giống hệt danh sách đọc vào nhưng được sắp xếp theo ngày tháng năm sinh tăng dần

Ví dụ

Input

LE KIM ANH 3/4/1990 NU
TRAN DINH 13/2/1989 NAM
NGUYEN DINH HA NAM 24/12/1991 NAM
NGUYEN THI MAI 3/4/1990 NU
NGUYEN HAI HOA 24/12/1991 NU

Output

TRAN DINH 13/2/1989 NAM
LE KIM ANH 3/4/1990 NU
NGUYEN THI MAI 3/4/1990 NU
NGUYEN DINH HA NAM 24/12/1991 NAM
NGUYEN HAI HOA 24/12/1991 NU
tichpx

Comments


  • 0
    TICHPX  commented on Sept. 28, 2022, 7:11 a.m.

    code tham khảo

    from sys import stdin
    from collections import namedtuple
    from datetime import datetime 
    sv=namedtuple('SV','id,ten,ns,gioi')
    A=[]
    ind=0
    for t in stdin:
        na,db,sex=t.rsplit(' ',2)
        d,m,y=map(int, db.split("/"))
        db=datetime(y,m,d)
        ind+=1
        A.append(sv(ind,na,db,sex))
    A.sort(key=lambda x:(x.ns,x.id))
    for x in A:
        print(x.ten,"{0:d}/{1:d}/{2:d}".format(x.ns.day,x.ns.month,x.ns.year),x.gioi)