//自己没想出来,抄c排名第一个的
//方法:0 - 23*60+59,去试试符合 条件第一次手表格式否, 和第二次条件
//之前卡在先确定hour第一位,再比对第二位,再比对第三位上,因为情况太多(其实也可以实现),直接放弃。
//符合就进入候选数组
//遍历比对得到相差最小值,最大值
#include <stdio.h>
#include<malloc.h>
int main() {
char time1[6];
for (int i = 0; i < 5; i++) {
scanf("%c", &time1[i]);
}
char time2[6];
scanf("%s",&time2[0]);
// 枚举法
int biggest_time = 23 * 60 + 59;
// 存储可能值
int* time1Possib = (int*)malloc(sizeof(int) * biggest_time);
int len1 = 0;
int* time2Possib = (int*)malloc(sizeof(int) * biggest_time);;
int len2 = 0;
for (int i = 0; i <= biggest_time; i++) {
int hour = i / 60;
int minu = i % 60;
if ((hour / 10 == time1[0] - '0' || time1[0] == '?') &&
(hour % 10 == time1[1] - '0' || time1[1] == '?') && ( minu / 10 == time1[3] - '0'||
time1[3] == '?') && (minu % 10 == time1[4] - '0' || time1[4] == '?')) {
time1Possib[len1++] = i;
}
if ((hour / 10 == time2[0] - '0' || time2[0] == '?') &&
(hour % 10 == time2[1] - '0' || time2[1] == '?') && ( minu / 10 == time2[3] - '0'||
time2[3] == '?') && (minu % 10 == time2[4] - '0'|| time2[4] == '?')) {
time2Possib[len2++] = i;
}
}
int max = 0;
int min = biggest_time;
for(int i = 0;i<len1;i++){
for(int j =0;j<len2;j++){
if(time1Possib[i]<time2Possib[j]){
min = time2Possib[j]-time1Possib[i]<min?time2Possib[j]-time1Possib[i]:min;
max = time2Possib[j]-time1Possib[i]>max?time2Possib[j]-time1Possib[i]:max;
}
}
}
printf("%d %d",min, max);
return 0;
}