Report (Simple Ver.)
题目描述
断罪中学⑨年级的学生们终于迎来了期末考试,心花怒放的他们原以为考完试就解放了,可谁知学校突然下令考试之后立即补课……
设参加考试的⑨年级学生共有\(N\)人,考试科目有\(K\)门。输入这\(N\)名学生的学号和各科成绩,请你排出一张全年级的成绩单,要求:
(1)总成绩高的排在前边;
(2)总成绩并列的,学号较小的排在前边;
(3)更多要求见“输出格式”部分。
I/O格式
输入
第一行是两个正整数\(N, K\);
之后\(N\)行描述每名学生的信息,每行\(K+1\)个非负整数:先是该学生的学号\(C_i\),然后依次是各科成绩\(s_{i,1}, s_{i,2} \cdots s_{i,K}\)。保证任意两名学生的学号不相同。
输出
输出\(N\)行,按排好后的顺序输出每名同学的信息。每行依次为:该生的学号、各科成绩(与输入时顺序一致)、总成绩。
为了让排出来的成绩表更美观,要求:
(1)每一列均为右对齐;
(2)最左边一列中,字符数最多的一格顶住左端;对于右边几列,字符数最多的一格与前一列间距2个空格。
细则可以参考样例。
样例
输入
6 3
155420 83 125 104
125439 101 90 95
135240 80 79 99
16548 122 119 71
210021 120 113 132
233333 2 3 3
输出
210021 120 113 132 365
16548 122 119 71 312
155420 83 125 104 312
125439 101 90 95 286
135240 80 79 99 258
233333 2 3 3 8
提示
较大型的结构体作为函数参数时,建议将形参设为常量左值引用(const T&),以避免无谓的内存拷贝。
struct Foo {
int arr[256];
int x;
};
void foo1(Foo f) {
//形参传值,Foo结构体内的大数组arr会拷贝过来,严重影响性能
}
void foo2(const Foo& f) {
//形参传常量引用,避免内存拷贝
}
数据规模及约定
\(N \le 2 \times 10^4; \phantom{x} K \le 10; \phantom{x} 10^5 \le C_i < 10^{24}; \phantom{x} 0 \le s_i \le 150\)
前20%的数据保证:\(N < 10; \phantom{x} 10 \le s_{i,j} < 100; \phantom{x} 100 \le \sum_{j=1}^{K} s_{i,j} < 1000; \phantom{x} 10^6 \le C_i < 10^7\)
随后40%的数据保证:所有学号的位数均相同,即\(\exists p \in \{5,6 \cdots 23\}, \phantom{x} \forall i = 1, 2 \cdots N, \phantom{x} 10^p \le C_i < 10^{p+1}\)
时间限制1s,空间限制64MB。
来源
原创题