Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3.  
  4. public class radio {
  5. static char[] fj;
  6. static char[] bessie;
  7. static long[][] dp;
  8.  
  9. public static void main(String[] args) throws IOException {
  10. BufferedReader br = new BufferedReader(new FileReader("radio.in"));
  11. PrintWriter pw = new PrintWriter(new FileWriter("radio.out"));
  12. StringTokenizer st = new StringTokenizer(br.readLine());
  13.  
  14. int f = Integer.parseInt(st.nextToken());
  15. int b = Integer.parseInt(st.nextToken());
  16.  
  17. st = new StringTokenizer(br.readLine());
  18. int fjx = Integer.parseInt(st.nextToken());
  19. int fjy = Integer.parseInt(st.nextToken());
  20.  
  21. st = new StringTokenizer(br.readLine());
  22. int bx = Integer.parseInt(st.nextToken());
  23. int by = Integer.parseInt(st.nextToken());
  24. st = new StringTokenizer(br.readLine());
  25. String fjs = st.nextToken();
  26. fj = new char[f+1];
  27. for(int x = 0; x<f; x++)
  28. fj[x] = fjs.charAt(x);
  29.  
  30. st = new StringTokenizer(br.readLine());
  31. String bs = st.nextToken();
  32. bessie = new char[b+1];
  33. for(int x = 0; x<b; x++)
  34. bessie[x] = bs.charAt(x);
  35.  
  36. dp = new long[fj.length][bessie.length];
  37. rev(fj);
  38. rev(bessie);
  39. //pw.println(Arrays.toString(fj) + " " + Arrays.toString(bessie));
  40. for(long[] k : dp){
  41. Arrays.fill(k,-1);
  42. }
  43.  
  44. pw.println(solve(fj.length-1, bessie.length-1, fjx, fjy, bx, by));
  45. pw.close();
  46.  
  47. }
  48.  
  49. public static long solve(int i, int j, int fx, int fy, int bx, int by){
  50. if(dp[i][j] > -1)
  51. return dp[i][j];
  52.  
  53. if(i == 0 && j == 0){
  54. return 0;
  55. }
  56.  
  57. int dxf = 0;
  58. int dyf = 0;
  59. int dxb = 0;
  60. int dyb = 0;
  61. if(fj[i] == 'N')
  62. dyf = 1;
  63. if(fj[i] == 'S')
  64. dyf = -1;
  65. if(fj[i] == 'W')
  66. dxf = -1;
  67. if(fj[i] == 'E')
  68. dxf = 1;
  69. if(bessie[j] == 'N')
  70. dyb = 1;
  71. if(bessie[j] == 'S')
  72. dyb = -1;
  73. if(bessie[j] == 'W')
  74. dxb = -1;
  75. if(bessie[j] == 'E')
  76. dxb = 1;
  77.  
  78. if(i == 0){
  79. return dp[i][j] = dist(fx,fy,bx+dxb,by+dyb) + solve(i,j-1,fx,fy,bx+dxb,by+dyb);
  80. }
  81. if(j == 0){
  82. return dp[i][j] = dist(fx+dxf, fy+dyf, bx,by) + solve(i-1,j,fx+dxf, fy+dyf, bx,by);
  83. }
  84. return dp[i][j] = Math.min(dist(fx+dxf,fy+dyf,bx,by) + solve(i-1,j,fx+dxf,fy+dyf,bx,by), Math.min(dist(fx+dxf,fy+dyf,bx + dxb,by + dyb) + solve(i-1,j-1,fx+dxf,fy+dyf,bx+dxb,by+ dyb),
  85. dist(fx,fy,bx + dxb,by + dyb) + solve(i,j-1,fx,fy,bx+dxb,by+ dyb)));
  86.  
  87. }
  88.  
  89. public static long dist(int x1, int y1, int x2, int y2){
  90. return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
  91. }
  92.  
  93. public static void rev(char[] arr){
  94. char[] temp = new char[arr.length];
  95. for(int x = arr.length-1; x>=0; x--){
  96. temp[arr.length-1-x] = arr[x];
  97. }
  98. for(char k = 0; k < arr.length; k++){
  99. arr[k] = temp[k];
  100. }
  101. }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement