fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. int main()
  6. {
  7. ios::sync_with_stdio(false);
  8. cin.tie(0);
  9. int n,x,y;
  10. cin >> n >> x >> y;
  11. string s;
  12. cin >> s;
  13. int pozX=0,pozY=0;
  14.  
  15. //levo,desno,dole,gore
  16. int l=0,r=0,d=0,u=0;
  17.  
  18. int A = 1e9;
  19. //broj B
  20. int B;
  21. for(int i = 0;i<s.length();i++)
  22. {
  23. if(s[i] == 'R')
  24. {
  25. pozX++;
  26. r++;
  27. }else if(s[i] == 'L')
  28. {
  29. pozX--;
  30. l++;
  31. }else if(s[i] == 'U')
  32. {
  33. pozY++;
  34. u++;
  35. }else
  36. {
  37. pozY--;
  38. d++;
  39. }
  40.  
  41. //dx je razdaljina po x osi
  42. int dx = x-pozX;
  43. //dy je razdaljina po y osi
  44. int dy = y - pozY;
  45. //ukupna razdaljina
  46. int dist = abs(dx)+abs(dy);
  47.  
  48. int sum = 0;
  49. //Da li su razdaljine iste parnosti
  50. if(abs(dx) % 2 == abs(dy) % 2)
  51. {
  52. //ako je tacka levo u odnosu na robota
  53. if(dx < 0)
  54. sum += r;
  55. //ako je tacka desno u odnosu na robota
  56. else if(dx > 0)
  57. sum+=l;
  58.  
  59. if(dy < 0)
  60. //ako je tacka dole u odnosu na robota
  61. sum+=u;
  62. //ako je tacka gore u odnosu na robota
  63. else if(dy > 0)
  64. sum+=d;
  65.  
  66. //svaki put kada promenis neku komandu menjas poziciju robota za 2 zbog toga se deli sa 2
  67. if(sum >= dist/2)
  68. {
  69. //ovo je za B
  70. if(i == s.length()-1)
  71. B = dist/2;
  72.  
  73. A = min(A,dist/2);
  74. }
  75. }
  76. }
  77. cout << A << " " << B;
  78.  
  79. return 0;
  80. }
Success #stdin #stdout 0s 4396KB
stdin
Standard input is empty
stdout
1000000000 721044153