PAT 1028

这道题JAVA能超时我也是无奈了,感觉没啥办法了,自求多福吧... 换python更跪,C++又是VC 6.0,紫金港你特么能不能成点事啊>_<

 1 import java.util.*;
 2 import java.io.*;
 3
 4 class FastReader{
 5     BufferedReader reader;
 6     StringTokenizer tokenizer;
 7
 8     public FastReader(InputStream stream){
 9         reader = new BufferedReader(new InputStreamReader(stream), 123456789);
10         tokenizer = null;
11     }
12
13     public String next(){
14         while (tokenizer == null || !tokenizer.hasMoreTokens()){
15             try{
16                 tokenizer = new StringTokenizer(reader.readLine());
17             } catch (Exception e){
18                 throw new RuntimeException(e);
19             }
20         }
21
22         return tokenizer.nextToken();
23     }
24
25     public int next_int(){
26         return Integer.parseInt(next());
27     }
28 }
29
30 class StudentInfo{
31     String id;
32     String name;
33     int grade;
34 }
35
36 public class Main {
37     public static void main(String[] args){
38         FastReader reader = new FastReader(System.in);
39         int N = reader.next_int();
40         int C = reader.next_int();
41
42         ArrayList<StudentInfo> students = new ArrayList<StudentInfo>();
43         for (int i = 0; i < N; i++){
44             StudentInfo s = new StudentInfo();
45             s.id = reader.next();
46             s.name = reader.next();
47             s.grade = reader.next_int();
48
49             students.add(s);
50         }
51
52         if (C == 1){
53             Collections.sort(students, new Comparator<StudentInfo>(){
54                 public int compare(StudentInfo s1, StudentInfo s2){
55                     return s1.id.compareTo(s2.id);
56                 }
57             });
58         } else if (C == 2){
59             Collections.sort(students, new Comparator<StudentInfo>(){
60                 public int compare(StudentInfo s1, StudentInfo s2){
61                     if (!s1.name.equals(s2.name))
62                         return s1.name.compareTo(s2.name);
63                     else{
64                         return s1.id.compareTo(s2.id);
65                     }
66                 }
67             });
68         } else {
69             Collections.sort(students, new Comparator<StudentInfo>(){
70                 public int compare(StudentInfo s1, StudentInfo s2){
71                     if (s1.grade != s2.grade)
72                         return s1.grade - s2.grade;
73                     else{
74                         return s1.id.compareTo(s2.id);
75                     }
76                 }
77             });
78         }
79
80         for (StudentInfo s : students){
81             System.out.println(s.id + " " + s.name + " " + s.grade);
82         }
83     }
84 }
时间: 2024-10-17 04:36:31

PAT 1028的相关文章

PAT 1028. List Sorting (25)

1028. List Sorting (25) Excel can sort records according to any column. Now you are supposed to imitate this function. Input Each input file contains one test case. For each case, the first line contains two integers N (<=100000) and C, where N is th

PAT 1028. List Sorting

#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; class Stu { public: char id[8]; char name[10]; char grade; }; bool cmp_id(const Stu* a, const Stu* b) { return strcmp(a->id, b->

PAT|1028 人口普查(简单模拟)

注意点:1.最年长人的出生日期是1814/9/6 2.最年轻人的出生日期是2014/9/6 3.存在输入样例均不在合理日期内 应只输出0 思路:将符合条件的加入进结构体数组中,并对他们进行排序,输出最大最小即可. #include <algorithm> #include <iostream> #include <cstdio> #include <queue> #include <cstring> #include <vector>

PAT——乙级1028

这道题花了我半个多小时,对呀乙级算是挺多时间的了. 1028 人口普查 (20 point(s)) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数 N,取值在(0,10?5??]:随后 N 行,每行给出 1 个人的姓名(

PAT 甲级 1028 List Sorting (25 分)(排序,简单题)

1028 List Sorting (25 分)   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 (≤) and C, wh

PAT:1028. 人口普查(20) AC

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; struct STU { char mname[10]; int y,m,d; }tmp,old,young,left,right; void init() { old.y=right.y=2014; young.y=left.y=1814; old.m=right.

PAT:1028. List Sorting (25) AC

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; struct Student { char ID[10]; char name[10]; int gread; }STU[100010]; bool cmp1(Student a,Student b) { return strcmp(a.ID,b.ID)<0; } bool cmp2(Student a,Stu

PAT (Basic Level) Practise:1028. 人口普查

[题目链接] 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串).以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日.题目保证最年长和最年轻

1028.人口普查(PAT)

题目分析:构造一个Compare函数,比较日期的大小即可,不过要注意如果没有合法的生日,就只能输出一个零(这里贼坑). 代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 struct person{ 5 char name[20]; 6 int year; 7 int month; 8 int day; 9 }youngest,oldest; 10 11 void Init(){ 12 youngest.year = 2014