Advertisement
deushiro

Untitled

Feb 23rd, 2020
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include <cmath>
  2. #include <iostream>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <string>
  6. #include <set>
  7. #include <map>
  8. #include <list>
  9. #include <time.h>
  10. #include <math.h>
  11. #include <random>
  12. #include <deque>
  13. #include <queue>
  14. #include <cassert>
  15. #include <unordered_map>
  16. #include <unordered_set>
  17. #include <iomanip>
  18. #include <bitset>
  19. #include <sstream>
  20. #include <chrono>
  21. #include <cstring>
  22.  
  23. using namespace std;
  24.  
  25. #define rep(i,a,n) for (int i=a;i<n;i++)
  26. #define fi first
  27. #define se second
  28. #define pb push_back
  29. #define mp make_pair
  30. #define sz(x) ((int)(x).size())
  31. #define all(x) (x).begin(),(x).end()
  32. #define PI 3.14159265358979323846
  33.  
  34. typedef long long ll;
  35. typedef long double ld;
  36.  
  37. void fastIO() {
  38.     ios_base::sync_with_stdio(false);
  39.     cin.tie(0);
  40.     cout.tie(0);
  41. }
  42.  
  43. const int mxn = 5e5 + 228;
  44. int n;
  45. int l[mxn];
  46. int r[mxn];
  47. vector<int> a;
  48.  
  49. void calc_lr() {
  50.     vector<int> st;
  51.     for (int i = 0; i <= n + 1; ++i) {
  52.         while (!st.empty() && a[i] <= a[st.back()]) {
  53.             st.pop_back();
  54.         }
  55.         if (st.empty()) {
  56.             l[i] = -1;
  57.         }
  58.         else {
  59.             l[i] = st.back();
  60.         }
  61.         st.push_back(i);
  62.     }
  63.     st.clear();
  64.     for (int i = n + 1; i >= 0; --i) {
  65.         while (!st.empty() && a[i] < a[st.back()]) {
  66.             st.pop_back();
  67.         }
  68.         if (st.empty()) {
  69.             r[i] = n + 2;
  70.         }
  71.         else {
  72.             r[i] = st.back();
  73.         }
  74.         st.push_back(i);
  75.     }
  76. }
  77.  
  78.  
  79. int main() {
  80.     fastIO();
  81.     cin >> n;
  82.     a.resize(n + 3);
  83.     for (int i = 0; i < n; ++i) {
  84.         cin >> a[i];
  85.     }
  86.     calc_lr();
  87.     for (int i = 0; i < n; ++i) {
  88.         cout << l[i] << " ";
  89.     }
  90.     cout << endl;
  91.     for (int i = 0; i < n; ++i) {
  92.         cout << r[i] << " ";
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement