题解 | 分数线划定
分数线划定
https://www.nowcoder.com/practice/2395fa7b6c6e452e8d8310a7cfdbe902
#include <cmath>
#include <iostream>
#include <iterator>
#include <vector>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int a,m;
cin >> a>> m;
int t = std::floor(1.5 * m);
vector<map<string,string>> s;
for(int i =0;i<a;i++){
map<string,string> m;
string value1;
string value2;
cin >> value1 >> value2;
m["id"] = value1;
m["score"] = value2;
s.push_back(m);
}
sort(s.begin(),s.end(),[](const map<string,string>& a,const map<string,string>& b){
int scoreA = stoi(a.at("score"));
int scoreB = stoi(b.at("score"));
if(scoreA != scoreB){
return scoreA > scoreB;
}else{
return a.at("id") < b.at("id");
}
});
string interview_score = t>a? s[s.size()-1].at("score") :s[t-1].at("score");
vector<map<string,string>> filtered;
copy_if(s.begin(),s.end(),back_inserter(filtered),[&](const auto& item){
return stoi(item.at("score")) >= stoi(interview_score);
});
cout << interview_score << " " << filtered.size() << endl;
for(const auto& e :filtered){
cout << e.at("id") << " " << e.at("score") << endl;
}
}
// 64 位输出请用 printf("%lld")

