Problem:
A: 不思議な植物

問題

あるところに不思議な $X$ [cm] の植物が生えている.
この植物は以下の不思議な性質を持っている.

この植物に "nobiro" と声を掛けると, その植物は $A$ [cm] 成長する.

この植物に "tidime" と声を掛けると, その植物は $B$ [cm] 成長する.

この植物に "karero" と声をかけると, その植物は $0$ [cm] になる.

ただし, この植物は負の長さにはならないとする.
具体的には, $C$ [cm] の状態から $D$ [cm] $(C + D \lt 0)$ 成長するとき, 植物は $0$ [cm] になったときに成長が止まる.

この植物に $N$ 日間, 毎日一度だけ "nobiro", "tidime", "karero" のうちどれか
一つの言葉をかけた. $N$ 日後の植物の長さ [cm] を求めよ.

制約

入力値は全て整数である.

$0 \leq X \leq 100$

$-100 \leq A,B \leq 100$

$1 \leq N \leq 1000$

$S_i$ は "nobiro", "tidime" または "karero" のいずれかである.

入力形式

入力は以下の形式で与えられる.

$X\ A\ B$

$N $

$S_1$

$S_2$

$\vdots$

$S_N$

出力

$N$ 日後の植物の長さを出力せよ. また末尾に改行を出力せよ.

サンプル

サンプル入力 1

10 30 10
3
nobiro
nobiro
tidime

サンプル出力 1

80

サンプル入力 2

10 -20 -30
1
nobiro

サンプル出力 2

0

Solution in JAVA (judge verdict: Accepted)


import java.io.*;


public class Main {


	// メイン return falseでおしまい
	boolean main() throws IOException {

	    int[] a = readIntArray();
	    int X = a[0];
	    int A = a[1];
	    int B = a[2];
        int N = readIntArray()[0];
//		if (N == 0)
//			return false; /* おしまい */

		for(int i = 0; i < N; i++) {
		      String s = reader.readLine();
		      if (s.equals("nobiro")) {
		          X += A;
		      }
		      else if (s.equals("tidime")) {
                  X += B;
              }
              else if (s.equals("karero")) {
                  X = 0;
              }
		      if (X < 0)
		          X = 0;
		}
		System.out.printf("%d\n", X);

		//return true; /* 正常終了 次へ */
		return false;
	}


//	private final static boolean DEBUG = true;  // debug
	private final static boolean DEBUG = false; // release

	public static void main(String[] args) throws IOException {

		if (DEBUG) {
			log = System.out;

			String inputStr = "10 30 10\r\n" +
			        "3\r\n" +
			        "nobiro\r\n" +
			        "nobiro\r\n" +
			        "tidime\n";
//			String inputStr = "4\n0 0 10 0 10 10 0 10\n10\n12\n0 0\n9 1\n0\n"; // 96.63324958071081
//			String inputStr = "4\n0 0 10 0 10 10 0 10\n10\n12\n0 1\n9 1\n0\n"; // 103.2664991614216
//			String inputStr = "8\n2 0 4 0 6 2 6 4 4 6 2 6 0 4 0 2\n10\n12\n3 0\n3 5\n0\n"; // 60.0

			reader = new BufferedReader(new StringReader(inputStr));

		}
		else {
			log = new PrintStream(new OutputStream() { public void write(int b) {} } ); // 書き捨て
			reader = new BufferedReader(new InputStreamReader(System.in)); // コンソールから
		}

		for(int loop = 0;; loop++) {
			boolean b = new Main().main();
			if (!b)
				break;
		}

		reader.close();
	}


	static PrintStream log;
	static BufferedReader reader;


	// 標準入力より　1行分のスペース区切りの整数値を読む
	private int[] readIntArray() throws IOException {

		String s = reader.readLine();
		String[] sp = s.split(" ");
		int[] a = new int[sp.length];
		for(int i = 0; i < sp.length; i++) {
			a[i] = Integer.parseInt(sp[i]);
		}
		return a;
	}

}