开门人和关门人
#include<iostream>
#include<string>
#include<deque>
using namespace std;
int main()
{
int m,n,i;
deque<string> vec; //建立两个队列,用来存放时间
deque<string> ve;
string str,str1,str2;
cin>>n;
while(n--)
{
vec.clear(); //事先清空数列
ve.clear();
cin>>m;
string s1="23:59:59",s2="00:00:00"; //分别代表一天中最早和最晚的时间
for(i=1;i<=m;i++)
{
cin>>str>>str1>>str2;
if(str1<=s1) {s1=str1;vec.push_back(str);}//代表来的最早的,每次插入队尾,最后一个即为来的最早的.
if(str2>=s2) {s2=str2;ve.push_back(str);}//最晚走的
}
cout<<vec[vec.size()-1]<<" "<<ve[ve.size()-1]<<endl;
}
return 0;
}
思路:补充知识:(deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素。但它又与vector不同,deque支持高效插入和删除容器的头部元素,因此也叫做双端队列)。方法比较巧妙,理解应该很容易。