L2-2 老板的作息表
Published on 2022-11-17 23:02 in 暂未分类 with 林动

L2-2 老板的作息表

    新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了?

    本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。

    输入格式:
    输入第一行给出一个正整数 N,为作息表上列出的时间段的个数。随后 N 行,每行给出一个时间段,格式为:

    hh:mm:ss - hh:mm:ss
    其中 hh、mm、ss 分别是两位数表示的小时、分钟、秒。第一个时间是开始时间,第二个是结束时间。题目保证所有时间都在一天之内(即从 00:00:00 到 23:59:59);每个区间间隔至少 1 秒;并且任意两个给出的时间区间最多只在一个端点有重合,没有区间重叠的情况。

    输出格式:
    按照时间顺序列出时间表中没有出现的区间,每个区间占一行,格式与输入相同。题目保证至少存在一个区间需要输出。

    输入样例:
    8
    13:00:00 - 18:00:00
    00:00:00 - 01:00:05
    08:00:00 - 09:00:00
    07:10:59 - 08:00:00
    01:00:05 - 04:30:00
    06:30:00 - 07:10:58
    05:30:00 - 06:30:00
    18:00:00 - 19:00:00
    输出样例:
    04:30:00 - 05:30:00
    07:10:58 - 07:10:59
    09:00:00 - 13:00:00
    19:00:00 - 23:59:59

    #include <bits/stdc++.h>
    
    using namespace std;
    const int N=24*60*60;
    bool stl[N],str[N];
    
    int toint(int x,int y,int z){
    	return x*3600+y*60+z; 
    }
    
    void print(int x)
    {
    	int a=x/3600;
    	int b=x%3600/60;
    	int c=x%60;
    	printf("%02d:%02d:%02d",a,b,c);
    }
    
    void out(int l,int r)
    {
    	print(l);
    	cout<<" - ";
    	print(r);
    	cout<<endl;
    }
    int main()
    {
    	int n;cin>>n;
    	while(n--)
    	{
    		int x,y,z,l,r;
    		char c; 
    		scanf("%d:%d:%d",&x,&y,&z);
    		l=toint(x,y,z);
    		cin>>c;
    		scanf("%d:%d:%d",&x,&y,&z);
    		r=toint(x,y,z);
    		stl[l]=true;
    		str[r]=true;
    		for(int i=l+1;i<=r-1;++i){
    			stl[i]=true;
    			str[i]=true;
    		}
    	} 
    	int l=0;
    	int r=0;
    	while(1)
    	{
    		for(int i=l;i<N;++i){
    			if(stl[i]==false){
    				l=i;break;
    			}
    		}
    		if(l==N-1)break;
    		for(int i=l+1;i<N;++i)
    		{
    			if(str[i+1]==true||i==N-1){
    				r=i;break;
    			}
    		}
    		for(int i=l;i<=r;++i){
    			stl[i]=true;
    			str[i]=true;
    		}
    		out(l,r);
    		l=r;
    	}
    	
    	return 0;
    }
    
    posted @   林动  阅读(92)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
    · Manus的开源复刻OpenManus初探
    · 三行代码完成国际化适配,妙~啊~
    · .NET Core 中如何实现缓存的预热?
    · 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
    点击右上角即可分享
    微信分享提示