//POJ 2351D - Time Zones--- 这类问题统一转换成分钟(同一单位)来处理会方便很多
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;
double getadd(string a)
{
if (a=="UTC" ) return 0;
if (a=="GMT" ) return 0;
if (a=="BST" ) return 1;
if (a=="IST" ) return 1;
if (a=="WET" ) return 0;
if (a=="WEST" ) return 1;
if (a=="CET" ) return 1;
if (a=="CEST" ) return 2;
if (a=="EET" ) return 2;
if (a=="EEST" ) return 3;
if (a=="MSK" ) return 3;
if (a=="MSD" ) return 4;
if (a=="AST" ) return -4;
if (a=="ADT" ) return -3;
if (a=="NST" ) return -3.5;
if (a=="NDT" ) return -2.5;
if (a=="EST" ) return -5;
if (a=="EDT" ) return -4;
if (a=="CST" ) return -6;
if (a=="CDT" ) return -5;
if (a=="MST" ) return -7;
if (a=="MDT" ) return -6;
if (a=="PST" ) return -8;
if (a=="PDT" ) return -7;
if (a=="HST" ) return -10;
if (a=="AKST" ) return -9;
if (a=="AKDT" ) return -8;
if (a=="AEST" ) return 10;
if (a=="AEDT" ) return 11;
if (a=="ACST" ) return 9.5;
if (a=="ACDT" ) return 10.5;
if (a=="AWST" ) return 8;
}
int change(int &apm)
{
if (apm==1)
apm=2;
else
apm=1;
return 0;
}
int main()
{
int i,j;
int n,m,k;
int t;
cin>>t;
while(t--)
{
string tim;
string timezone1;
string timezone2;
int shi;
int fen;
int ti;
int apm;
int mark=0;
cin>>tim;
if (tim=="noon")
ti=12*60;
else
if (tim=="midnight")
ti=0;
else
{
if (tim[1]==':')
{
shi=tim[0]-'0';
fen=(tim[2]-'0')*10+tim[3]-'0';
}
else
{
shi=10*(tim[0]-'0')+tim[1]-'0';
fen=10*(tim[3]-'0')+tim[4]-'0';
}
cin>>tim;
if (tim[0]=='a')
{
if (shi==12)
ti=fen;
else
ti=shi*60+fen;
}
else
{
if (shi==12)
ti=12*60+fen;
else
ti=12*60+shi*60+fen;
}
}
cin>>timezone1;
cin>>timezone2;
double t1=getadd(timezone1);
double t2=getadd(timezone2);
double tt=t2-t1;
if (tt<0)
tt+=24;
int ans=ti+int(tt*60);
if (ans>24*60)
ans-=24*60;
if (ans%(24*60)==0)
printf("midnight\n");
else
if (ans==12*60)
printf("noon\n");
else
if (ans<60)
printf("12:%02d a.m.\n",ans);
else
if (ans<12*60)
printf("%d:%02d a.m.\n",ans/60,ans%60);
else
if (ans<12*60+60)
printf("12:%02d p.m.\n",ans%60);
else
printf("%d:%02d p.m.\n",ans/60-12,ans%60);
}
return 0;
}
POJ 2351-D - Time Zones
最新推荐文章于 2020-11-29 10:30:34 发布