結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
![]() |
提出日時 | 2019-07-26 23:05:40 |
言語 | Java (openjdk 23) |
結果 |
MLE
|
実行時間 | - |
コード長 | 2,214 bytes |
コンパイル時間 | 2,568 ms |
コンパイル使用メモリ | 84,604 KB |
実行使用メモリ | 640,924 KB |
最終ジャッジ日時 | 2024-07-02 09:15:29 |
合計ジャッジ時間 | 98,651 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 38 WA * 25 MLE * 18 -- * 11 |
ソースコード
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] sa = br.readLine().split(" "); int n = Integer.parseInt(sa[0]); sa = br.readLine().split(" "); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = Integer.parseInt(sa[i]); } sa = br.readLine().split(" "); int q = Integer.parseInt(sa[0]); int[][] p = new int[q][3]; for (int i = 0; i < q; i++) { sa = br.readLine().split(" "); for (int j = 0; j < 3; j++) { p[i][j] = Integer.parseInt(sa[j]); } } br.close(); List<Map<Integer, Integer>> list = new ArrayList<>(n); list.add(new HashMap<>()); for (int i = 0; i < n; i++) { Map<Integer, Integer> soinsu = bunkai(a[i]); for (Integer o : list.get(i).keySet()) { if (soinsu.containsKey(o)) { soinsu.put(o, soinsu.get(o) + list.get(i).get(o)); } else { soinsu.put(o, list.get(i).get(o)); } } list.add(soinsu); } PrintWriter pw = new PrintWriter(System.out); for (int i = 0; i < q; i++) { Map<Integer, Integer> soinsu = bunkai(p[i][0]); Map<Integer, Integer> l = list.get(p[i][1] - 1); Map<Integer, Integer> r = list.get(p[i][2]); boolean flg = true; for (Integer o : soinsu.keySet()) { int x = soinsu.get(o); Integer y = l.get(o); if (y == null) y = 0; Integer z = r.get(o); if (z == null) z = 0; if (x > z - y) { flg = false; break; } } if (flg) { pw.println("Yes"); } else { pw.println("NO"); } } pw.flush(); } static Map<Integer, Integer> bunkai(int n) { Map<Integer, Integer> soinsu = new HashMap<>(); int end = (int) Math.sqrt(n); int d = 2; while (n > 1) { if (n % d == 0) { n /= d; if (soinsu.containsKey(d)) { soinsu.put(d, soinsu.get(d) + 1); } else { soinsu.put(d, 1); } end = (int) Math.sqrt(n); } else { if (d > end) { d = n - 1; } d++; } } return soinsu; } }