POJ 2351-D - Time Zones

来源:互联网 发布:澳门航空怎么样 知乎 编辑:程序博客网 时间:2024/05/16 01:11
//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;elseapm=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;  elseif (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;elseti=shi*60+fen;}else{ if (shi==12) ti=12*60+fen;elseti=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");elseif (ans==12*60)printf("noon\n");elseif (ans<60)printf("12:%02d a.m.\n",ans);elseif (ans<12*60)printf("%d:%02d a.m.\n",ans/60,ans%60);elseif (ans<12*60+60)printf("12:%02d p.m.\n",ans%60);elseprintf("%d:%02d p.m.\n",ans/60-12,ans%60);   }return 0;}

0 0