結果
問題 |
No.3014 岩井満足性問題
|
ユーザー |
![]() |
提出日時 | 2025-01-25 14:14:48 |
言語 | Java (openjdk 23) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,652 bytes |
コンパイル時間 | 3,542 ms |
コンパイル使用メモリ | 80,408 KB |
実行使用メモリ | 724,112 KB |
最終ジャッジ日時 | 2025-01-25 23:12:50 |
合計ジャッジ時間 | 12,013 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge7 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 MLE * 3 |
ソースコード
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long inf = (long) Math.pow(10, 16); int N = Integer.parseInt(sc.next()); int D = Integer.parseInt(sc.next()); int K = Integer.parseInt(sc.next()); int[] A = new int[N]; int[] C = new int[N]; for(int i = 0; i < N; ++i) { A[i] = Integer.parseInt(sc.next()); } for(int i = 0; i < N; ++i) { C[i] = Integer.parseInt(sc.next()); } long[][] dp = new long[D+1][K+1]; for(int d = 0; d <= D; ++d) { for(int k = 0; k <= K; ++k) { dp[d][k] = -inf; } } dp[0][0] = 0; for(int i = 0; i < N; ++i) { long[][] ndp = new long[D+1][K+1]; for(int d = 0; d <= D; ++d) { for(int k = 0; k <= K; ++k) { ndp[d][k] = dp[d][k]; } } for(int d = 0; d < D; ++d) { for(int k = 0; k <= K; ++k) { if (dp[d][k] == -inf) continue; int j = Integer.min(k+C[i], K); if(ndp[d+1][j] == -inf) { ndp[d+1][j] = dp[d][k]+A[i]; } else { ndp[d+1][j] = Long.max(ndp[d+1][j], dp[d][k]+A[i]); } } } dp = ndp; } if (dp[D][K] == -inf) { System.out.println("No"); } else { System.out.println(dp[D][K]); } } }