No início de cada dia, a primeira pessoa que sinais na sala de computador vai abrir a porta, eo último que assina fora vai trancar a porta. Dado os registros de assinar em de e para fora de, você é suposto para encontrar os que tenham desbloqueado e trancou a porta naquele dia.
Especificação de entrada:
Cada arquivo de entrada contém um caso de teste. Cada caso contém os registros por um dia. O caso começa com um número inteiro positivo M, que é o número total de registos, seguido de M linhas, cada no formato:
ID_Number Sign_in_time Sign_out_time
onde os tempos são dados no formato HH: MM: SS, e ID_Number é uma string com não mais de 15 caracteres.
Especificação de saída:
Para cada caso de teste, imprima em uma linha os números de identificação das pessoas que tenham desbloqueado e trancou a porta naquele dia. Os dois números de identificação deve ser separada por um espaço.
Nota: É garantido que os registros são consistentes. Isto é, o sinal em tempo deve ser mais cedo do que o sinal de um tempo para cada pessoa, e não há duas pessoas entrar ou sair no mesmo momento.
Entrada de Amostra:
3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40
Exemplo de saída:
SC3021234 CS301133
pensamento
Define uma matriz de estruturas, cada aluno id são lidos no horário de saída ea saída ordenou-time, e encontrar o número correspondente Ciência
código
#include <cstdio>
#include <algorithm>
using namespace std;
struct node{
char id[16];
int in_time = 0;
int out_time = 0;
}stu[1000];
bool cmp1(node a, node b)
{
return a.in_time<b.in_time;
}
bool cmp2(node a, node b)
{
return a.out_time>b.out_time;
}
int main()
{
int N;//学生人数
int h1,h2, m1,m2, s1,s2;
scanf("%d", &N);
for (int i = 0; i < N; ++i)
{
scanf("%s %d:%d:%d", stu[i].id,&h1,&m1,&s1);
stu[i].in_time = h1*3600+m1*60+s1;
scanf("%d:%d:%d",&h2,&m2,&s2);
stu[i].out_time = h2*3600+m2*60+s2;
}
sort(stu,stu+N,cmp1);//排序找到进入时间最小的学号
printf("%s ", stu[0].id);
sort(stu,stu+N,cmp2);//排序找到离开时间最大的学号
printf("%s", stu[0].id);
}