PAT甲级 1028 List Sorting (25分)(cin cout 超时问题)

注意: 用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\n",s[i].num,s[i].name,s[i].grade);
34     }
35     return  0;
36 }

 

上一篇:如何在Java中按两列对csv文件进行排序?


下一篇:mysql-使用SQL命令中的“按/排序”和合并联接为数百万行优化SSIS包