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

Posted lllaih

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
",s[i].num,s[i].name,s[i].grade);
34     }
35     return  0;
36 }

 

以上是关于PAT甲级 1028 List Sorting (25分)(cin cout 超时问题)的主要内容,如果未能解决你的问题,请参考以下文章

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

PAT 1028 List Sorting

PAT Advanced 1028 List Sorting (25分)

PAT甲级1052 Linked List Sorting (25分)

PAT甲级1052 Linked List Sorting (25 分)

1028. List Sorting (25)