1006. Sign In and Sign Out (25)
(1)思路
就是简单的排序不过这里数据比较弱,用cin和cout没有超时
#include <cstdio> #include <vector> #include <algorithm> #include <string> #include <iostream> using namespace std; struct re{ string id; string in; string out; }; bool cmp1(re r1,re r2){ return r1.in < r2.in;} bool cmp2(re r1,re r2){ return r1.out > r2.out;} int main() { int n; scanf("%d",&n); vector<re> re_v(n); for(int i=0;i<n;i++) { cin>>re_v[i].id>>re_v[i].in>>re_v[i].out; } sort(re_v.begin(),re_v.end(),cmp1); cout<<re_v[0].id<<" "; sort(re_v.begin(),re_v.end(),cmp2); cout<<re_v[0].id; return 0; }
(2) 也可以直接将时间转换成秒来比较大小并找到最找来的人的编号,和最晚走的人的编号
#include <cstdio> #include <string> #include <iostream> #include <climits> using namespace std; int main() { int n; scanf("%d",&n); string locked,unlock; int min_in=INT_MAX; int max_out=INT_MIN; for(int i=0;i<n;i++) { string t; cin>>t; int h1,h2,m1,m2,s1,s2; scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2); int tem_sec1=h1*3600+m1*60+s1; int tem_sec2=h2*3600+m2*60+s2; if(tem_sec1 < min_in) { unlock=t; min_in=tem_sec1; } if(tem_sec2 > max_out) { locked=t; max_out=tem_sec2; } } cout<<unlock<<" "<<locked; return 0; }
Yosoro