結果
問題 |
No.2740 Old Maid
|
ユーザー |
|
提出日時 | 2024-04-21 07:47:04 |
言語 | Java (openjdk 23) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,547 bytes |
コンパイル時間 | 2,690 ms |
コンパイル使用メモリ | 88,608 KB |
実行使用メモリ | 172,116 KB |
最終ジャッジ日時 | 2024-10-13 06:31:50 |
合計ジャッジ時間 | 9,742 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 3 |
other | TLE * 1 -- * 61 |
ソースコード
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); int len=sc.nextInt(); List<Integer> arr=new ArrayList<>(len); List<Integer> result=new ArrayList<>(len); for(int i=0;i<len;i++){ arr.add(sc.nextInt()); } while(!arr.isEmpty()){ Value min=findMin(arr); result.add(min.a); result.add(min.b); arr.remove(min.offset); arr.remove(min.offset); } StringBuilder builder=new StringBuilder(result.size()*4); for(Integer c:result){ builder.append(c).append(" "); } System.out.println(builder.toString().replaceFirst(" $","")); } private static Value findMin(List<Integer> arr){ Integer minA=Integer.MAX_VALUE; Integer minB=Integer.MAX_VALUE; int offset=-1; Integer prev=arr.getFirst(); for(int i=1,size=arr.size();i<size;i++){ if(minA<prev){ prev=arr.get(i); continue; } if(minA.equals(prev) &&minB<=arr.get(i)){ prev=arr.get(i); continue; } minA=prev; minB=arr.get(i); prev=minB; offset=i-1; } return new Value(minA,minB,offset); } private record Value(Integer a, Integer b, int offset){} }