PKU 2895 Best SMS to Type
http://poj.org/problem?id=2895
携帯の文字を打つのにどれくらい時間がかかるかを計算するというような問題。
switch caseとか使うもんじゃありませんね。
泥実装。
main(){ int t; cin>>t; while(t--){ int p,w; cin>>p>>w; cin.ignore(); string in; getline(cin,in); int last=0; int ans=0; rep(i,SZ(in)){ switch(in[i]){ case ' ': ans+=p; last=' '; break; case 'A': case 'B': case 'C': ans+=(in[i]-'A'+1)*p; if(i && last=='A')ans+=w; last='A'; break; case 'D': case 'E': case 'F': ans+=(in[i]-'D'+1)*p; if(i&& last=='D')ans+=w; last='D'; break; case 'G': case 'H': case 'I': ans+=(in[i]-'G'+1)*p; if(i&& last=='G')ans+=w; last='G'; break; case 'J': case 'K': case 'L': ans+=(in[i]-'J'+1)*p; if(i && last=='J')ans+=w; last='J'; break; case 'M': case 'N': case 'O': ans+=(in[i]-'M'+1)*p; if(i && last=='M')ans+=w; last='M'; break; case 'P': case 'Q': case 'R': case 'S': ans+=(in[i]-'P'+1)*p; if(i && last=='P')ans+=w; last='P'; break; case 'T': case 'U': case 'V': ans+=(in[i]-'T'+1)*p; if(i && last=='T')ans+=w; last='T'; break; case 'W': case 'X': case 'Y': case 'Z': ans+=(in[i]-'W'+1)*p; if(i && last=='W')ans+=w; last='W'; break; } } cout<<ans<<endl; } }