2895 Best SMS to Type
問題概要
携帯電話でアルファベットを打つ。(キーは標準的なマッピング)
キーを一度押すのにはp秒かかり、
同じキーにマップされた文字が連続した場合ウェイトがw秒必要である。(ただしスペースは例外)
p,wおよび入力する文字列が与えられたとき、入力にかかる時間を求めよ。
解法
定義にしたがって実装すればよい。
ソースコード
char *let[]={" ","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"}; int key[256],time[256]; char in[1001]; int main(){ rep(i,9)for(int j=0;let[i][j];j++){ key[let[i][j]]=i+1; time[let[i][j]]=j+1; } int t,a,b; scanf("%d",&t); rep(T,t) { scanf("%d%d ",&a,&b); gets(in); int s=0; for(int i=0;in[i];i++){ if(in[i]==' '){ s+=a; continue; } if(i&&key[in[i]]==key[in[i-1]])s+=b; s+=time[in[i]]*a; } printf("%d\n",s); } return 0; }