Dennnhhhickk

Untitled

Nov 5th, 2017
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 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. }
Add Comment
Please, Sign In to add comment