結果

問題 No.3502 GCD Knapsack
コンテスト
ユーザー msksknkn
提出日時 2026-04-18 20:47:36
言語 Java
(openjdk 25.0.2)
コンパイル:
javac -encoding UTF8 _filename_
実行:
java -ea -Xmx700m -Xss256M -DONLINE_JUDGE=true _class_
結果
AC  
実行時間 1,337 ms / 2,000 ms
コード長 897 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,047 ms
コンパイル使用メモリ 84,416 KB
実行使用メモリ 120,836 KB
最終ジャッジ日時 2026-04-18 20:48:27
合計ジャッジ時間 38,109 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 35
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package no3502_GCD_knapsack;
import java.util.*;
public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int w = sc.nextInt();
		int max = 200001;
		long[] ans = new long[max];
		ArrayList<ArrayList<Integer>> l = new ArrayList<>();
		l.add(new ArrayList<>());
		for(int i = 1;i < max;i++) {
			l.add(new ArrayList<>());
		}for(int i = 1;i < max;i++) {
			for(int j = i;j < max;j += i) {
				l.get(j).add(i);
			}
		}
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0;i < n;i++) {
			x[i] = sc.nextInt();
		}for(int i = 0;i < n;i++) {
			y[i] = sc.nextInt();
		}for(int i = 0;i < n;i++) {
			for(int s:l.get(x[i])) {
				ans[s] += y[i];
			}
		}long out = 0;
		for(int i = w;i < max;i++) {
			out = Math.max(ans[i], out);
		}System.out.println(out);
	}

}
0