这题是一个需要处理字符串的模拟题。
下面是我最开始写出来的代码。
#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
struct stu{
string id;
int score;
string site;
string date;
};
bool cmp(stu a,stu b){
if(a.score!=b.score)return a.score>b.score;
return a.id<b.id;
}
bool cmp2(pair<int,int> a,pair<int,int> b){
if(a.second!=b.second)return a.second>b.second;
return a.first<b.first;
}
void exec(){
int N,M;
cin>>N>>M;
vector<stu> stus(N);
vector<stu> t_stu,a_stu,b_stu;
for(int i=0;i<N;i++){
cin>>stus[i].id>>stus[i].score;
stus[i].site=stus[i].id.substr(1,3);
stus[i].date=stus[i].id.substr(4,6);
if(stus[i].id[0]=='T'){
t_stu.push_back(stus[i]);
}else if(stus[i].id[0]=='A'){
a_stu.push_back(stus[i]);
}else if(stus[i].id[0]=='B'){
b_stu.push_back(stus[i]);
}
}
sort(t_stu.begin(),t_stu.end(),cmp);
sort(a_stu.begin(),a_stu.end(),cmp);
sort(b_stu.begin(),b_stu.end(),cmp);
for(int i=0;i<M;i++){
int type;
string term;
cin>>type>>term;
cout<<"Case "<<i+1<<": "<<type<<" "<<term<<endl;
if(type==1){
if(term=="T"){
if(t_stu.size()==0){cout<<"NA"<<endl;continue;}
for(auto stu:t_stu){
cout<<stu.id<<" "<<stu.score<<endl;
}
}else if(term=="A"){
if(a_stu.size()==0){cout<<"NA"<<endl;continu