Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N=1e5+10;
- int a[N], f[N][2], n;
- stack<int> box;
- int main()
- {
- scanf ("%d", &n);
- for (int i=1;i<=n;i++) scanf ("%d", &a[i]);
- for (int i=1;i<=n;i++)
- {
- while (!box.empty())
- {
- int xt=box.top();
- if (a[xt]>a[i])
- {
- f[i][0]=xt;
- break;
- }
- else box.pop();
- }
- box.push(i);
- }
- while (!box.empty()) box.pop();
- for (int i=n;i>0;i--)
- {
- while (!box.empty())
- {
- int xt=box.top();
- if (a[xt]>a[i])
- {
- f[i][1]=xt;
- break;
- }
- else box.pop();
- }
- box.push(i);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment