HDU1234 开门人和关门人,有看了下一其他些写法,但是实在不知道这样写为啥通不过 ,提交后显示的是wron

C语言 码拜 8年前 (2017-05-05) 1400次浏览
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1&sectionid=3&problemid=7
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
char name[16];
int zxiaoshi; int zfenzhong; int zmiao; //拼音:zao早上小时,早上分钟,早上秒
int wxiaoshi; int wfenzhong;int wmiao;//拼音: wan晚上小时,分钟,秒
}h[1000];
bool cmp(const node& p,const node& q)
{
if(p.zxiaoshi==q.zxiaoshi)
{
if(p.zfenzhong==q.zfenzhong)
return p.zmiao<q.zmiao;
else
return p.zfenzhong<q.zfenzhong;
}
else return p.zmiao<q.zmiao;
}
bool cmp2(const node& p,const node& q)
{
if(p.wxiaoshi==q.wxiaoshi)
{
if(p.wfenzhong==q.wfenzhong)
return p.wmiao>q.wmiao;
else
return p.wfenzhong>q.wfenzhong;
}
return p.wmiao>q.wmiao;
}
int main()
{
freopen (“H.in”, “r”, stdin);
//  freopen (“H.out”, “w”, stdout);
long int n;
cin>>n;
for(int i=0;i<n;i++)
{
int m;
cin>>m;
for(int j=0;j<m;j++)
{
char a;
scanf(“%s %d:%d:%d”, h[j].name, &h[j].zxiaoshi, &h[j].zfenzhong, &h[j].zmiao);
scanf(“%d:%d:%d”,&h[j].wxiaoshi, &h[j].wfenzhong, &h[j].wmiao);
}
sort(h,h+m,cmp);
cout<<h[0].name<<” “;
sort(h,h+m,cmp2);
cout<<h[0].name<<endl;
}
return 0;
}
题目
Problem Description
每天第一个到机房的人要把门打开,最后一个离开的人要把门关好。现有一堆杂乱的机房签
到、签离记录,请根据记录找出当天开门和关门的人。

Input
测试输入的第一行给出记录的总天数N ( > 0 )。下面列出了N天的记录。
每天的记录在第一行给出记录的条目数M ( > 0 ),下面是M行,每行的格式为
证件号码 签到时间 签离时间
其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。

Output
对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。
注意:在裁判的标准测试输入中,全部记录保证完整,每个人的签到时间在签离时间之前,
且没有多人同时签到或签离的情况。
Sample Input
3
1
ME3021112225321 00:00:00 23:59:59
2
EE301218 08:05:35 20:56:35
MA301134 12:35:45 21:40:42
3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40

Sample Output
ME3021112225321 ME3021112225321
EE301218 MA301134
SC3021234 CS301133

解决方案

39

两个cmp函数最外层的else,是不是应该比较的是xiaoshi?

2

网上找下AC的代码吧。
1.看看你们的输入输出格式是不是一致
2.多测试一些样例

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明HDU1234 开门人和关门人,有看了下一其他些写法,但是实在不知道这样写为啥通不过 ,提交后显示的是wron
喜欢 (0)
[1034331897@qq.com]
分享 (0)