PAT (Advanced Level) Practice 1006 Sign In and Sign Out

1、使用sscanf,可節省對字符串的分割的代碼

2、注意scanf讀字符串時,是以空格和回車結尾的

3、將signIn和signOut時間轉化成秒,然後一遍循環,找出signIn最小的id和signOut最大的id

#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct Record{
    char id[20];
    int in;
    int out;
};
struct Record records[100000];
char str[50];
int main()
{
    int hi,mi,si,ho,mo,so,n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%s",records[i].id);
        scanf("%s",str);
        sscanf(str,"%d:%d:%d",&hi,&mi,&si);
        scanf("%s",str);
        sscanf(str,"%d:%d:%d",&ho,&mo,&so);
        records[i].in = hi*60*60+mi*60+si;
        records[i].out = ho*60*60+mo*60+so;
    }
    int MIN,MAX;
    MIN = MAX = 0;
    for(int i=1;i<n;i++){
        if(records[i].in < records[MIN].in){
            MIN = i;
        }
        if(records[i].out > records[MAX].out){
            MAX = i;
        }
    }
    printf("%s %s\n",records[MIN].id,records[MAX].id);
    return 0;
}

 

發佈了79 篇原創文章 · 獲贊 52 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章