PKU 1326 Mileage Bank

http://poj.org/problem?id=1326
飛行機での移動でたまるマイレージを計算するという問題。

表だけ見ればかける。入力の2段階終了処理を泥臭く書きました。

main(){
  string in;
  while(cin>>in){
    if(in=="#")break;
    int ans=0;
    cin>>in;
    int ac;
    char cc;
    cin>>ac>>cc;
    if(cc=='F')ans+=ac+ac;
    else if(cc=='B')ans+=ac+(ac+1)/2;
    else{
      if(ac>500)ans+=ac;
      else ans+=500;
    }
    while(cin>>in){
      if(in=="0")break;
      cin>>in;
      cin>>ac>>cc;

      if(cc=='F')ans+=ac+ac;
      else if(cc=='B')ans+=ac+(ac+1)/2;
      else{
	if(ac>500)ans+=ac;
	else ans+=500;
      }
    }
    cout<<ans<<endl;
  }
}