Advertisement
Dennnhhhickk

Untitled

Nov 5th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 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.     stack <ll> tt;
  19.     if (x <= t.top())
  20.     {
  21.         ll data = t.top();
  22.         t.pop();
  23.         while (1)
  24.         {
  25.             tt = t;
  26.             if (t.size())
  27.                 t = rec(t, data);
  28.             if (tt == t)
  29.                 break;
  30.         }
  31.         t.push(data);
  32.     }
  33.     else
  34.         t.pop();
  35.     return t;
  36. }
  37.  
  38. int main()
  39. {
  40.     ll n;
  41.     cin >> n;
  42.     for (int i = 0; i < n; i++)
  43.         cin >> a[i];
  44.     s.push(a[0]);
  45.     l[0] = 0;
  46.     for (int i = 1; i < n; i++)
  47.         {
  48.             s = rec(s, s.top());
  49.             l[i] = s.size();
  50.             s.push(a[i]);
  51.         }
  52.     reverse(a, a + n);
  53.     cout << endl;
  54.     d.push(a[0]);
  55.     r[0] = 0;
  56.     for (int i = 1; i < n; i++)
  57.         {
  58.             d = rec(d, d.top());
  59.             r[i] = d.size();
  60.             d.push(a[i]);
  61.         }
  62.     reverse(r, r + n);
  63.     for (int i = 0; i < n; i++)
  64.     {
  65.         char ch;
  66.         cin >> ch;
  67.         if (ch == 'L')
  68.             cout << l[i] << ' ';
  69.         else
  70.             cout << r[i] << ' ';
  71.     }
  72.     cout << endl;
  73.     system("pause");
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement