开门人和关门人

#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支持高效插入和删除容器的头部元素,因此也叫做双端队列)。方法比较巧妙,理解应该很容易。