Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. /**
  5. * Created by aa on 20 February 2017.
  6. */
  7. public class Debugging {
  8. static long[] time;
  9. static long r;
  10. static long p;
  11.  
  12. public static void main(String[] args) {
  13. Scanner scanner = new Scanner(System.in);
  14. String[] inputArray = scanner.nextLine().split(" ");
  15.  
  16. int n = Integer.parseInt(inputArray[0]);
  17. r = Long.parseLong(inputArray[1]);
  18. p = Long.parseLong(inputArray[2]);
  19.  
  20. time = new long[n + 1];
  21. Arrays.fill(time, Long.MAX_VALUE);
  22. time[0] = 0;
  23. time[1] = 0;
  24.  
  25. recurse(n);
  26.  
  27. System.out.println(time[n]);
  28. }
  29.  
  30. static void recurse(int i) {
  31. int s = (int) Math.sqrt(i);
  32. // check number of print statements
  33. for (int j = 1; j <= s; j++) {
  34. int blockLength = 1 + (i - 1) / (j + 1);
  35. if (time[blockLength] == Long.MAX_VALUE) {
  36. recurse(blockLength);
  37. }
  38.  
  39. time[i] = Math.min(time[i], r + p * j + time[blockLength]);
  40. }
  41.  
  42. // k is number of lines per code block after splitting
  43. for (int k = 1; k <= s; k++) {
  44. if (time[k] == Long.MAX_VALUE) {
  45. recurse(k);
  46. }
  47. time[i] = Math.min(time[i], r + p * (i - 1) / k + time[k]);
  48. }
  49. }
  50.  
  51. /*static long recurse(int n) {
  52. if (memory[numOfLines] == Long.MAX_VALUE) {
  53. for (int i = 2; i <= numOfLines; i++) {
  54. memory[numOfLines] = Math.min(memory[numOfLines], (i - 1) * timeToPrintf + timeToCompile +
  55. recurse((numOfLines + i - 1) / i));
  56. }
  57. }
  58.  
  59. return memory[numOfLines];
  60. }*/
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement