首页 > 代码库 > HD-ACM算法专攻系列(17)——考试排名
HD-ACM算法专攻系列(17)——考试排名
问题描述:
源码:
主要要注意输出格式.
#include"iostream" #include"iomanip" #include"algorithm" #include"string" using namespace std; struct Person { string name; int count; int score; }; bool cmp(Person a, Person b) { if(a.count > b.count) { return true; } else if(a.count == b.count) { if(a.score < b.score) { return true; } else if(a.score == b.score) { return a.name < b.name; } else { return false; } } else { return false; } } int atoi(string str, int start, int end) { int result = 0; for(int i = start; i <= end; i++) { result = result * 10 + (str[i] - ‘0‘); } return result; } int main() { int n, m, index = 0; string str; Person *p = new Person[1000]; cin>>n>>m; while(cin>>p[index].name) { p[index].count = 0; p[index].score = 0; for(int j = 0; j < n; j++) { cin>>str; if(str[0] != ‘-‘ && str[0] != ‘0‘) { p[index].count++; if(str[str.length() - 1] == ‘)‘) { for(int k = 0; k < str.length(); k++) { if(str[k] == ‘(‘) { p[index].score += atoi(str, 0, k - 1); p[index].score += atoi(str, k+1, str.length() - 2) * m; break; } } } else { p[index].score += atoi(str, 0, str.length() - 1); } } } index++; //if(index == 6)break; } sort(p, p + index, cmp); for(int i = 0; i < index; i++) { cout<<std::left<<setw(10)<<p[i].name<<" "<<std::right<<setw(2)<<p[i].count<<" "<<setw(4)<<p[i].score<<endl; } return 0; }
HD-ACM算法专攻系列(17)——考试排名
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。