結果
| 問題 |
No.854 公平なりんご分配
|
| コンテスト | |
| ユーザー |
ks2m
|
| 提出日時 | 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;
}
}
ks2m