結果
| 問題 |
No.205 マージして辞書順最小
|
| コンテスト | |
| ユーザー |
uafr_cs
|
| 提出日時 | 2015-09-07 02:31:37 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,343 bytes |
| コンパイル時間 | 2,023 ms |
| コンパイル使用メモリ | 79,068 KB |
| 実行使用メモリ | 56,256 KB |
| 最終ジャッジ日時 | 2024-07-19 04:51:19 |
| 合計ジャッジ時間 | 5,911 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 8 WA * 7 |
ソースコード
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final int N = sc.nextInt();
ArrayList<LinkedList<Character>> chars = new ArrayList<LinkedList<Character>>();
for(int i = 0; i < N; i++){
final char[] input = sc.next().toCharArray();
LinkedList<Character> list = new LinkedList<Character>();
for(final char c : input){
list.add(c);
}
chars.add(list);
}
StringBuilder sb = new StringBuilder();
while(true){
char min = '\0';
int min_pos = -1;
for(int i = 0; i < N; i++){
final LinkedList<Character> list = chars.get(i);
if(list.isEmpty()){ continue; }
if(min_pos < 0 || list.peek() < min){
min = list.peek();
min_pos = i;
}else if(list.peek() == min){
final int list_prev = list.size() == 1 ? Integer.MAX_VALUE : list.get(1);
final int min_pos_prev = chars.get(min_pos).size() == 1 ? Integer.MAX_VALUE : chars.get(min_pos).get(1);
if(list_prev < min_pos_prev){
min_pos = i;
}
}
}
if(min_pos < 0){ break; }
sb.append(chars.get(min_pos).poll());
}
System.out.println(sb.toString());
}
}
uafr_cs