Samkit5025

Untitled

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