📄 1963.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1963 on 2005-12-21 at 17:43:40 */
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
const char zone[][8] = { "UTC", "GMT", "BST", "IST", "WET", "WEST", "CET", "CEST",
"EET", "EEST", "MSK", "MSD", "AST", "ADT", "NST", "NDT", "EST", "EDT", "CST",
"CDT", "MST", "MDT", "PST", "PDT", "HST", "AKST", "AKDT", "AEST", "AEDT", "ACST",
"ACDT", "AWST", "" };
const int rd[] = { 0, 0, 2, 2, 0, 2, 2, 4, 4, 6, 6, 8, -8, -6, -7, -5, -10, -8, -12,
-10, -14, -12, -16, -14, -20, -18, -16, 20, 22, 19, 21, 16 };
struct cmp {
bool operator ()(const char* s1, const char* s2) const {
return strcmp(s1, s2) < 0;
}
};
int main()
{
map<const char*, int, cmp> time;
int i, t, T;
char cur[64], za[8], zb[8];
for(i = 0; zone[i][0] != 0; i++) {
time[zone[i]] = rd[i];
}
scanf("%d", &T);
for(t = 0; t < T; t++) {
int hour, minute;
bool certain = true;
scanf("%s", cur);
if(!strcmp(cur, "noon")) hour = 12, minute = 0;
else if(!strcmp(cur, "midnight")) hour = 0, minute = 0;
else sscanf(cur, "%d:%d", &hour, &minute), certain = false;
if(!certain) {
scanf("%s", cur);
if(!strcmp(cur, "p.m.") && hour != 12) hour += 12;
if(!strcmp(cur, "a.m.") && hour == 12) hour = 0;
}
scanf("%s %s", za, zb);
int rdt = time.find(zb)->second - time.find(za)->second + 48;
hour += rdt / 2, minute += (rdt % 2) * 30;
while(minute >= 60) hour++, minute -= 60;
hour %= 24;
if(hour == 0) {
if(minute == 0) printf("midnight\n");
else printf("12:%02d a.m.\n", minute);
} else if(hour == 12) {
if(minute == 0) printf("noon\n");
else printf("12:%02d p.m.\n", minute);
} else if(hour > 12) printf("%d:%02d p.m.\n", hour-12, minute);
else printf("%d:%02d a.m.\n", hour, minute);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -