输入样例
8 4
B123180908127 99
B102180908003 86
A112180318002 98
T107150310127 62
A107180908108 100
T123180908010 78
B112160918035 88
A107180908021 98
1 A
2 107
3 180908
2 999
输出样例
Case 1: 1 A
A107180908108 100
A107180908021 98
A112180318002 98
Case 2: 2 107
3 260
Case 3: 3 180908
107 2
123 2
102 1
Case 4: 2 999
NA
先看看AC代码,速度非常的快,基本胜过CSDN所有的朋友。(装个小x)
然后我总结一下这道题遇到的一些阻碍。
其实这个题本身想法上是很顺畅的,没有什么难度。但是debug的时候有些错误很难找到。如果考试中出现这道题,需要好的心态,因为我编了一个小时才ac。
- 首先这种10000数量级的字符串读入操作,不要使用c++的cin和cout,这样会非常耗时。同时出现一个问题就是也不能用string容器了,因为string只能用cin读取(当然如果非要用的话需要申请空间,所以干脆别用)。因此一切字符串都会用**字符数组存储。**那么一些取子串、复制的操作就没有趁手的函数了,这一有一个神来之笔的函数就是sccanf().
看到了吗,把原来的整个字符串分割成好几部分赋值给其他的变量。同时也可以实现复制操作,和取子串操作。 - 然后
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cstring>
using namespace std;
struct student{
char cardID[20];
char level[10];
char room[10];
char date[10];
char id[10];
int score;
}S[10010];
struct type3{
int room;
int num=0;
};
bool cmp1(struct student a,struct student b){
if(a.score!=b.score ) return a.score>b.score