Samkit5025

Untitled

Jun 22nd, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1.  
  2. import java.util.*;
  3.  
  4. public class Solution {
  5.  
  6. static Scanner sc = new Scanner(System.in);
  7.  
  8.  
  9. public static int cuttingTime(int N,int K,int[] P){
  10. if(N==K)return 0;
  11.  
  12. int[] dp = new int[N];
  13.  
  14. Deque<Integer> dqcost = new LinkedList<>();
  15. Deque<Integer> dqindex = new LinkedList<>();
  16.  
  17. for(int i=0;i<=K;i++) {
  18. dp[i] = P[i];
  19.  
  20. while(!dqcost.isEmpty() && dqcost.getLast()>dp[i]) {
  21. dqcost.remove();
  22. dqindex.remove();
  23. }
  24.  
  25. dqcost.add(dp[i]);
  26. dqindex.add(i);
  27. }
  28.  
  29. for(int i =K+1;i<N;i++) {
  30. if(!dqindex.isEmpty() && dqindex.getFirst()<i-K-1) {
  31. dqcost.remove();
  32. dqindex.remove();
  33. }
  34.  
  35. dp[i] = P[i] + dqcost.getFirst();
  36. while(!dqcost.isEmpty() && dqcost.getLast()>dp[i]) {
  37. dqcost.remove();
  38. dqindex.remove();
  39. }
  40.  
  41. dqcost.add(dp[i]);
  42. dqindex.add(i);
  43. }
  44.  
  45. int ans = 10000000;
  46.  
  47. for(int i=N-K-1;i<N;i++) {
  48. if(ans > dp[i]) {
  49. ans = dp[i];
  50. }
  51. }
  52.  
  53. return ans;
  54. }
  55.  
  56. public static void main(String[] args) {
  57. int N,K;
  58. N = sc.nextInt();
  59. K = sc.nextInt();
  60.  
  61. int[] P = new int[N];
  62.  
  63. for(int i = 0;i<N;i++) {
  64. P[i] = sc.nextInt();
  65.  
  66. }
  67.  
  68. System.out.println(cuttingTime(N,K,P));
  69. }
  70. }
  71.  
  72.  
  73.  
  74.  
Advertisement
Add Comment
Please, Sign In to add comment