A1006 Entrar e Sair (25 分)

1006 Entrar e Sair (25 分)

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 da 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

falar é fácil, mostrar meu código

#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main(){
	int n;
	scanf("%d",&n);
	string laterName,earlyName;
	int maxT=0,minT=99999999;
	while(n--!=0){
		string s;int a,b,c,e,f,g;
		cin >> s;
		scanf("%d:%d:%d",&a,&b,&c);
		scanf("%d:%d:%d",&e,&f,&g);
		int t=a*60*60+b*60+c;
		int l = e*3600+f*60+g;
		if(l>maxT){
			maxT=l;
			laterName=s;
		}
		if(t<minT){
			minT=t;
			earlyName=s;
		}
	}
	cout << earlyName << " " << laterName; 
	return 0;	
}
Publicado 91 artigos originais · ganhou elogios 9 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/WeDon_t/article/details/105259133
Recomendado
Clasificación