我的题解:
#include <iostream>
using namespace std;
int main()
{
int m,i,j;
cin>>m;
string ID_number[20],Sign_in_time[20],Sign_out_time[20];
for(i=0;i<m;i++)
{
cin>>ID_number[i]>>Sign_in_time[i]>>Sign_out_time[i];
}
int start,end;
string temp1;
temp1=Sign_in_time[0];
for(i=1;i<m;i++)
{
if(temp1>=Sign_in_time[i])
{
temp1=Sign_in_time[i];
start=i;
}
}
string temp2;
temp2=Sign_out_time[0];
for(i=1;i<m;i++)
{
if(temp2<=Sign_out_time[i])
{
temp2=Sign_out_time[i];
end=i;
}
}
cout<<ID_number[start]<<' '<<ID_number[end];
}
优秀题解:
简单模拟,取个最大最小值就完事了。
C++ 代码
#include <iostream>
using namespace std;
const int N = 15;
struct S
{
string id, t1, t2;
}s[N];
int n;
int main()
{
cin >> n;
for (int i = 0; i < n; i ++) cin >> s[i].id >> s[i].t1 >> s[i].t2;
string imin, imax, tmin = "9999999999", tmax = "0";
for (int i = 0; i < n; i ++)
{
if (s[i].t1 < tmin)
tmin = s[i].t1, imin = s[i].id;
if (s[i].t2 > tmax)
tmax = s[i].t2, imax = s[i].id;
}
cout << imin << " " << imax;
}
作者:P云
链接:https://www.acwing.com/solution/content/11185/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
时间字符串ascall码随时间单调增,故可以直接采用字符串比较无需将数字提取出来再比较.
C++ 代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
using namespace std;
int main() {
int n;
cin>>n;
string early_begin="24:00:00";
string latest_end="00:00:00";
string ans_begin;
string ans_end;
for(int i=0;i<n;i++)
{
string number,begin,end;
cin>>number>>begin>>end;
if(begin<early_begin){early_begin=begin;ans_begin=number;}
if(end>latest_end){latest_end=end;ans_end=number;}
}
cout<<ans_begin<<" "<<ans_end<<endl;
return 0;
}
作者:RAbbit
链接:https://www.acwing.com/solution/content/81825/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。