結果

問題 No.154 市バス
コンテスト
ユーザー ゴリポン先生
提出日時 2025-11-25 10:02:12
言語 D
(dmd 2.109.1)
結果
AC  
実行時間 9 ms / 2,000 ms
コード長 954 bytes
コンパイル時間 3,230 ms
コンパイル使用メモリ 160,816 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-11-25 10:02:18
合計ジャッジ時間 4,264 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

module main;
// https://chiwawa-star.hatenablog.com/entry/2016/06/27/004207 より
// 文字列処理
import std;

bool check(string S) {
	int R, G, W;
	// 後ろから見ていく
	foreach_reverse (s; S) {
		final switch (s) {
		//Rが来たら系統を増やす
		case 'R':
			R++;
			break;
		//Rを持っているGが来たらG++,R--する
		case 'G':
			if (R >= 1) {
				G++;
				R--;
			} else {
				//Rを持たないGはfalse
				return false;
			}
			break;
		//Wの場合は3つの選択肢がある
		case 'W':
			//RGを持つ場合
			if (G >= 1) {
				G--;
				W++;
			//RGが無く,RGW+を持っている場合
			} else if (W >= 1) {
				W++;
			//RG,RGW+のいづれも持たない場合
			} else {
				return false;
			}
			break;
		}
	}
	return R == 0 && G == 0;

}

void main()
{
	// テストケースの処理
	foreach (_; 0 .. readln.chomp.to!int) {
		auto S = readln.chomp;
		writeln(check(S) ? "possible" : "impossible");
	}
}
0