結果
| 問題 | No.154 市バス |
| コンテスト | |
| ユーザー |
jp_ste
|
| 提出日時 | 2015-03-18 06:32:18 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 516 ms / 2,000 ms |
| コード長 | 1,607 bytes |
| コンパイル時間 | 2,001 ms |
| コンパイル使用メモリ | 77,552 KB |
| 実行使用メモリ | 48,376 KB |
| 最終ジャッジ日時 | 2024-10-13 07:13:59 |
| 合計ジャッジ時間 | 6,138 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 8 |
ソースコード
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int i=0; i<T; i++) {
char[] S = sc.next().toCharArray();
//一番右はR
if(S[S.length-1] != 'R') {
System.out.println("impossible");
continue;
}
//RとGの個数は同じ
int rNum = getCharCount(S, 'R');
int gNum = getCharCount(S, 'G');
if(rNum>0 && gNum>0 && (rNum==gNum)) {
} else {
System.out.println("impossible");
continue;
}
int r, g, w;
//一番右のGより右にWがあってはだめ
g = getCharIndex(S, S.length, 'G');
w = getCharIndex(S, S.length, 'W');
if(g>0 && w>0 && (w<g)) {
} else {
System.out.println("impossible");
continue;
}
for(int j=0; j<rNum; j++) {
r = getCharIndex(S, S.length, 'R');
g = getCharIndex(S, r, 'G');
w = getCharIndex(S, g, 'W');
if(r<0 || g<0 || w<0) {
break;
}
if( (r > g && r > w) && (w < g && w < r) ) {
S[r] = S[g] = S[w] = ' ';
} else {
break;
}
}
rNum = getCharCount(S, 'R');
if(rNum == 0) {
System.out.println("possible");
} else {
System.out.println("impossible");
}
}
}
static int getCharIndex(char[] list, int edge, char c) {
for(int i=edge-1; i>=0; i--) {
if(list[i] == c) return i;
}
return -1;
}
static int getCharCount(char[] list, char c) {
int ret = 0;
for(int i=0; i<list.length; i++) {
if(list[i] == c) ret++;
}
return ret;
}
}
jp_ste