Excel can sort records according to any column. Now you are supposed to imitate this function.

Input Specification:

Each input file contains one test case. For each case, the first line contains two integers N (≤10​5​​) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then Nlines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).

Output Specification:

For each test case, output the sorting result in N lines. That is, if C = 1 then the records must be sorted in increasing order according to ID's; if C = 2 then the records must be sorted in non-decreasing order according to names; and if C = 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.

Sample Input 1:

3 1
000007 James 85
000010 Amy 90
000001 Zoe 60

Sample Output 1:

000001 Zoe 60
000007 James 85
000010 Amy 90

Sample Input 2:

4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98

Sample Output 2:

000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60

Sample Input 3:

4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90

Sample Output 3:

000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90

#include <stdio.h>
#include <algorithm>
#include <string>
#include <iostream>
using namespace std;
const int maxn=;
struct stu{
string id;
string name;
int grade;
}students[maxn];
bool cmp1(stu s1,stu s2){
return s1.id<s2.id;
}
bool cmp2(stu s1,stu s2){
if(s1.name==s2.name) return s1.id<s2.id;
else return s1.name<s2.name;
}
bool cmp3(stu s1,stu s2){
if(s1.grade==s2.grade) return s1.id<s2.id;
else return s1.grade<s2.grade;
}
int main(){
int n,c;
scanf("%d %d",&n,&c);
for(int i=;i<n;i++){
cin>>students[i].id>>students[i].name>>students[i].grade;
}
if(c==){
sort(students,students+n,cmp1);
}
else if(c==){
sort(students,students+n,cmp2);
}
else if(c==){
sort(students,students+n,cmp3);
}
for(int i=;i<n;i++){
printf("%s %s %d\n",students[i].id.c_str(),students[i].name.c_str(),students[i].grade);
}
}

注意点:很简单的排序题,但是最后一个测试点会超时,原因是cout很慢,一开始以为是sort很慢,想是不是要用priority_queue,发现一样超时。然后把id改成int试了试还是超时,百度了一下,发现人家也都是sort做的唯一不同输出name也用printf。最后果然是cout速度太慢,printf输出string要用c_str。

最新文章

  1. 在PC上测试移动端网站和模拟手机浏览器的5大方
  2. 在其他系统Iframe中显示SharePoint 页面
  3. qt5.4.0编译错误
  4. 加密配置文件(App.Config和Web.config)中connectionStrings通用方法
  5. jsoncpp初使用
  6. Integer &amp; int &amp; == &amp; equals
  7. Tomcat启动后快逸报表报错的解决方法
  8. 如何将cmd中命令输出保存为TXT文本文件
  9. webView、scrollView、TableView,为了防止滚动时出现偏移,底部黑框问题等
  10. Mysql-学习笔记(==》存储过程 九)
  11. PHPWord生成word实现table合并(colspan和rowspan)
  12. fiddle 中 显示serverIp
  13. Chef
  14. requests设置headers,proxies,cookies
  15. R语言编程艺术# 数据类型向量(vector)
  16. 配置mybatis错误总结
  17. longest incresing sequence
  18. iOS 通知的使用
  19. CentOS/RHEL 7中的firewall控制
  20. 【Qt编程】基于Qt的词典开发系列&lt;五&gt;--无边框窗口的拖动

热门文章

  1. ES 5 中 判断数组的方法
  2. Python 正则介绍
  3. numpy库的常用方法
  4. Linux下修改IP、DNS、路由命令行设置
  5. 从零自学Java-8.创建第一个对象
  6. python常用模块之re模块(正则)
  7. 性能测试—认识JMeter(三)
  8. 使用mysqladmin extended-status查看MySQL的运行状态脚本
  9. C#语言————拼接、插入、替换、删除四种方法
  10. 使用 Array2XML把数组转成XML格式,有相同的节点