Advertisement
Dennnhhhickk

Untitled

Nov 5th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. // ConsoleApplication8.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <iomanip>
  7. #include <stack>
  8.  
  9. using namespace std;
  10.  
  11. typedef long long ll;
  12.  
  13. stack <ll> s, d;
  14. ll a[100000], l[100000], r[100000];
  15.  
  16. stack <ll> rec(stack <ll> t, ll x)
  17. {
  18. if (x <= t.top())
  19. {
  20. ll data = t.top();
  21. t.pop();
  22. if (t.size())
  23. t = rec(t, data);
  24. t.push(data);
  25. }
  26. else
  27. t.pop();
  28. return t;
  29. }
  30.  
  31. int main()
  32. {
  33. ll n;
  34. cin >> n;
  35. for (int i = 0; i < n; i++)
  36. cin >> a[i];
  37. s.push(a[0]);
  38. l[0] = 0;
  39. for (int i = 1; i < n; i++)
  40. if (a[i - 1] < a[i])
  41. {
  42. l[i] = s.size();
  43. s.push(a[i]);
  44. }
  45. else
  46. {
  47. s = rec(s, s.top());
  48. l[i] = s.size();
  49. s.push(a[i]);
  50. }
  51. reverse(a, a + n);
  52. d.push(a[0]);
  53. r[0] = 0;
  54. for (int i = 1; i < n; i++)
  55. if (a[i - 1] < a[i])
  56. {
  57. r[i] = d.size();
  58. d.push(a[i]);
  59. }
  60. else
  61. {
  62. d = rec(d, d.top());
  63. r[i] = d.size();
  64. d.push(a[i]);
  65. }
  66. reverse(r, r + n);
  67. for (int i = 0; i < n; i++)
  68. {
  69. char ch;
  70. cin >> ch;
  71. if (ch == 'L')
  72. cout << l[i] << ' ';
  73. else
  74. cout << r[i] << ' ';
  75. }
  76. cout << endl;
  77. system("pause");
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement