注意: 用scanf 和printf 进行输入输出 否则超时
cin,cout速度慢的原因就是它会将数据先读入缓冲区,然后再读入,所以与scanf的直接读入会有点时间差距。
1.换成scanf 和 printf输入输出
2.加一条语句
ios::sync_with_stdio(false);
题目代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 const int maxn = 0x3f3f3f3f; 7 typedef long long ll; 8 struct st{ 9 char num[10],name[10]; 10 int grade; 11 }s[100005]; 12 bool cmp1(st p,st q) { 13 return (strcmp(p.num,q.num) < 0); 14 } 15 bool cmp2(st p,st q) { 16 if(strcmp(p.name,q.name) != 0) return (strcmp(p.name,q.name) < 0); 17 return (strcmp(p.num,q.num) < 0); 18 } 19 bool cmp3(st p,st q) { 20 if(p.grade != q.grade) return p.grade < q.grade; 21 return (strcmp(p.num,q.num) < 0); 22 } 23 int main() { 24 int n,c; 25 scanf("%d%d",&n,&c); 26 for(int i = 0; i < n; i++) { 27 scanf("%s%s%d",s[i].num,s[i].name,&s[i].grade); 28 } 29 if(c == 1) sort(s,s+n,cmp1); 30 else if(c == 2) sort(s,s+n,cmp2); 31 else if(c == 3) sort(s,s+n,cmp3); 32 for(int i = 0; i < n; i++) { 33 printf("%s %s %d ",s[i].num,s[i].name,s[i].grade); 34 } 35 return 0; 36 }