文章

老板的作息表(2022天梯赛L2-2)

老板的作息表1.png老板的作息表2.png

结构体排序

#include<stdlib.h>
#include<string.h>
#include<bits/stdc++.h>
using namespace std;
struct stu {
    int lh,lm,ls;
    int rh,rm,rs;
}a[100001];
int cmp(const void * p,const void *q){
     stu x=*(stu*)p;
     stu y=*(stu*)q;
    if(x.lh!=y.lh) return x.lh-y.lh;
    if(x.lm!=y.lm) return x.lm-y.lm;
    return x.ls-y.ls;
}
int main()
{
    int n,i;
    cin>>n;
    for(i=0;i<n;i++){
        scanf("%d:%d:%d - %d:%d:%d",&a[i].lh,&a[i].lm,&a[i].ls,&a[i].rh,&a[i].rm,&a[i].rs);
    }
​
    qsort(a,n,sizeof(a[0]),cmp);
    if(a[0].lh!=0||a[0].lm!=0||a[0].ls!=0){
        printf("00:00:00 - %02d:%02d:%02d\n",a[0].lh,a[0].lm,a[0].ls);
    }
    for(i=0;i<n-1;i++){
        if(a[i].rh!=a[i+1].lh||a[i].rm!=a[i+1].lm||a[i].rs!=a[i+1].ls){
            
            printf("%02d:%02d:%02d - %02d:%02d:%02d\n",a[i].rh,a[i].rm,a[i].rs,a[i+1].lh,a[i+1].lm,a[i+1].ls);
        }
    }
    if(a[n-1].rh!=23||a[n-1].rm!=59||a[n-1].rs!=59){
        printf("%02d:%02d:%02d - 23:59:59\n",a[n-1].rh,a[n-1].rm,a[n-1].rs);
    }
    
    return 0;
 } 

原题链接

https://pintia.cn/problem-sets/994805046380707840/exam/problems/1518582383141380096

License:  CC BY 4.0