题目
输入:ID名称,登入时间,登出时间
输出:最早的入场ID、最晚的
input example
3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40
output example
SC3021234 CS301133
思路
存储结构:
string 二维数组
大神的思路:
- 通过设置string max和min的数值,通过比较得出最小和最大的ID,再输出(不需要进行数组的存储)
- 时间的获取scanf
- 通过将事件转换成秒
代码
#include<iostream>
#include<stdio.h>
#include<climits>
using namespace std;
int main(){
int n;
cin>>n;
int early=INT_MAX,late=INT_MIN;
string first,last;
for(int i=0;i<n;i++)
{
string ID;
cin>>ID;
int h1,m1,s1,h2,m2,s2;
scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);
//比较小的
int q1,q2;
q1=h1*60*60+m1*60+s1;
q2=h2*60*60+m2*60+s2;
if(early>q1)
{
early=q1;
first=ID;
}
if(late<q2)
{
late=q2;
last=ID;
}
}
cout<<first<<" "<<last;
return 0;
}
知识点
头文件定义的符号常量
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 类型的尾数
FLT_DIG float 类型的最少有效数字位数
FLT_MIN_10_EXP 带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP float类型的正指数的最大值(以10为底)
FLT_MIN 保留全部精度的float类型正数最小值
FLT_MAX float类型正数最大值