pat 1006

来源:互联网 发布:linux极点五笔输入法 编辑:程序博客网 时间:2024/04/28 06:32

Sign In and Sign Out


题目的意思就是有一些人, 来者有先后, 给出每个人的来的时间, 和去的时间,求解第一个来的人和最后一个走的人

我的思路是直接qsort 对时间进行两次排序

附代码:

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdlib.h>#define Max_len 20#define Max_num 1000int cmp(const void *a, const void *b);int cmp1(const void *a, const void *b);typedef struct come{char str[Max_len];int hour, min, sec;}come;typedef struct back{char str[Max_len];int hour, min, sec;}back;int main(){come co[Max_num];back ba[Max_num];char temp[Max_len];int m, i, hourc, minc, secc, hourb, minb, secb;scanf("%d", &m);for(i = 0; i < m; i++){scanf("%s %d:%d:%d%d:%d:%d", temp, &hourc, &minc, &secc, &hourb, &minb, &secb);strcpy(co[i].str, temp);  co[i].hour = hourc; co[i].min = minc; co[i].sec = secc;strcpy(ba[i].str, temp);  ba[i].hour = hourb; ba[i].min = minb; ba[i].sec = secb;}qsort(co, m, sizeof(co[0]), cmp);qsort(ba, m, sizeof(ba[0]), cmp1);printf("%s %s\n", co[0].str, ba[0].str);return 0;}int cmp(const void *a, const void *b){come *c = (come *)a;come *d = (come *)b;if(c -> hour != d -> hour){return c -> hour - d -> hour;}else if(c -> min != d -> min){return c -> min - d -> min;}else{return c -> sec - d -> sec;}}int cmp1(const void *a, const void *b){back *c = (back *)a;back *d = (back *)b;if(c -> hour != d -> hour){return d -> hour - c -> hour;}else if(c -> min != d -> min){return d -> min - c -> min;}else{return d -> sec - c -> sec;}}


0 0
原创粉丝点击