結果
問題 | No.50 おもちゃ箱 |
ユーザー |
![]() |
提出日時 | 2016-05-13 16:40:25 |
言語 | Java (openjdk 23) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 2,573 bytes |
コンパイル時間 | 2,566 ms |
コンパイル使用メモリ | 90,468 KB |
実行使用メモリ | 50,812 KB |
最終ジャッジ日時 | 2024-10-09 16:33:55 |
合計ジャッジ時間 | 6,475 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 36 WA * 2 |
ソースコード
/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { public static void main (String[] args) throws java.lang.Exception { // your code goes here BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); ArrayList<Integer> toy = new ArrayList<Integer>(); int toy_sum = 0; for(String st:br.readLine().split(" ")){ int t = Integer.parseInt(st); toy.add(t); toy_sum += t; } Collections.sort(toy,(a,b)->{return b-a;}); int m = Integer.parseInt(br.readLine()); ArrayList<Integer> box = new ArrayList<Integer>(); for(String st:br.readLine().split(" ")){ box.add(Integer.parseInt(st)); } Collections.sort(box,(a,b)->{return b-a;}); int min = 0; int max = m; int ans = -1; while(max>=min){ int ave = (min+max)/2; if(check(new ArrayList<Integer>(box.subList(0,ave)),new ArrayList<Integer>(toy),toy_sum)){ ans = ave; max = ave-1; }else{ min = ave+1; } } System.out.println(ans); } public static boolean check(ArrayList<Integer> box,ArrayList<Integer> toy,int toy_sum){ for(int b:box){ toy_sum-=b; } if(toy_sum>0){ return false; } for(int i=0;i<toy.size();i++){ int idx = box.indexOf(toy.get(i)); if(idx >= 0){ toy.remove(i); i--; box.set(idx,0); } } Collections.sort(box,(a,b)->{return b-a;}); int box_size = box.size(); int toy_size = toy.size(); start:for(int j=0;j<box_size;j++){ ArrayList<Integer> t_box = new ArrayList<Integer>(box); for(int i=0;i<toy_size;i++){ int bo = t_box.get(0); int n = toy.get((i+j)%toy_size); int idx = t_box.indexOf(n); if(idx >= 0){ t_box.set(idx,0); }else if(bo>=n){ t_box.set(0,bo-n); }else{ continue start; } Collections.sort(t_box,(a,b)->{return b-a;}); } return true; } return false; } }