[A] por dia PAT 1006 Entrar e Sair

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);

}


Acho que você gosta

Origin www.cnblogs.com/xinyuLee404/p/12644189.html
Recomendado
Clasificación