PAT1006

    科技2026-02-12  18

    1006 Sign In and Sign Out (25分)

    At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock the door. Given the records of signing in’s and out’s, you are supposed to find the ones who have unlocked and locked the door on that day.

    Input Specification: Each input file contains one test case. Each case contains the records for one day. The case starts with a positive integer M, which is the total number of records, followed by M lines, each in the format:

    ID_number Sign_in_time Sign_out_time where times are given in the format HH:MM:SS, and ID_number is a string with no more than 15 characters.

    Output Specification: For each test case, output in one line the ID numbers of the persons who have unlocked and locked the door on that day. The two ID numbers must be separated by one space.

    Note: It is guaranteed that the records are consistent. That is, the sign in time must be earlier than the sign out time for each person, and there are no two persons sign in or out at the same moment.

    Sample Input: 3 CS301111 15:30:28 17:00:10 SC3021234 08:00:00 11:25:25 CS301133 21:45:00 21:58:40 Sample Output: SC3021234 CS301133

    简单思路

    该题相对简单,可利用时间的性质,比较两个时间的ASCII码,C++可直接使用strcmp比较字符串的大小,再用strcpy赋值、java同理利用原生compareTo函数实现大小的对比(不要忘记对输入流进行优化)。

    C++实现

    #include<iostream> #include<string.h> using namespace std; int n; char Id[20],in[20],out[20]; char inId[20],outId[20]; char minIn[20]={"23:59:59"}; char maxOut[20]={"00:00:01"}; int main(){ scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s %s %s",&Id,&in,&out); if(strcmp(in,minIn)<0){ strcpy(minIn,in); strcpy(inId,Id); } if(strcmp(out,maxOut)>0){ strcpy(maxOut,out); strcpy(outId,Id); } } printf("%s %s\n",inId,outId); }

    Java复现

    import java.io.BufferedReader; import java.io.InputStreamReader; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class PAT1006 { static class node{ static DateFormat format=new SimpleDateFormat("HH:mm:ss"); String id; Date in; Date out; public node(String id, String in, String out) throws ParseException { this.id = id; this.in = format.parse(in); this.out = format.parse(out); } } public static void main(String[] args) throws Exception { BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); int n=Integer.valueOf(reader.readLine()); String[] split=reader.readLine().split(" "); node nodes=new node(split[0],split[1],split[2]); node in=nodes,out =nodes; for(int i=1;i<n;i++){ split=reader.readLine().split(" "); node newNodes=new node(split[0],split[1],split[2]); if(newNodes.in.compareTo(in.in)<0){ in=newNodes; } if(newNodes.out.compareTo(out.out)>0){ out=newNodes; } } System.out.println(in.id+" "+out.id); } }
    Processed: 0.014, SQL: 9