Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define ll long long
- #include <iostream>
- using namespace std;
- #include <vector>
- #include <stack>
- //struct Node{
- // ll data;
- // Node *next;
- // Node();
- //
- // Node(long long int data, Node *next) : data(data), next(next) {}
- //};
- //class LinkedList{
- // public:
- // Node *s, *f;
- // int sz = 0;
- // LinkedList(){
- // s = nullptr, f = nullptr;
- // }
- // virtual ~LinkedList() {
- // }
- // void pushFront(int x){
- // Node *nw = new Node(x, nullptr);
- // if (s){
- // nw->next = s;
- // s = nw;
- // }
- // else{
- // nw->next = nullptr;
- // s = nw;
- // f = nw;
- // }
- // sz++;
- // }
- // void pushBack(int x){
- // Node *nw = new Node(x, nullptr);
- // nw->data = x;
- // nw->next = nullptr;
- // if (f){
- // f->next = nw;
- // f = nw;
- // }
- // else{
- // f = nw;
- // s = nw;
- // }
- // sz++;
- // }
- // int size(){
- // return sz;
- // }
- // int popFront(){
- // cout << "trying to pop...\n";
- // if (sz == 0){
- // cout << "size null\n";
- // return 0;
- // }
- // else{
- // cout << "popped " << s->data << '\n';
- // int ans = s->data;
- // s = s->next;
- // sz--;
- // return ans;
- // }
- // }
- // int popBack(){
- // if (sz == 0){
- // return 0;
- // }
- // if (sz == 1){
- // int ans = s->data;
- // s = nullptr;
- // f = nullptr;
- // sz--;
- // return ans;
- // }
- // Node *x = s;
- // while (x->next != f){
- // x = x -> next;
- // }
- // int ans = f->data;
- // f = x;
- // x->next = nullptr;
- // sz--;
- // return ans;
- // }
- //};
- //class Stack{
- // public:
- // LinkedList l = LinkedList();
- // virtual ~Stack() {
- // }
- // void push(int x){
- // l.pushFront(x);
- // }
- // int pop(){
- // if (l.size() == 0) return 0;
- // else return l.popFront();
- // }
- // int size(){
- // return l.size();
- // }
- // int back(){
- // if (l.size() == 0) return 0;
- // return l.s->data;
- // }
- // void clear(){
- // l.sz = 0;
- // l.s = nullptr;
- // l.f = nullptr;
- // }
- //};
- //ostream& operator << (ostream &out, LinkedList ff){
- // if (ff.size() == 0){
- // return out;
- // }
- // Node *n = ff.s;
- // while (n->next != nullptr){
- // out << n->data << ' ';
- // n = n->next;
- // }
- // out << n->data << ' ';
- // return out;
- //}
- //ostream& operator << (ostream &out, Stack ss){
- // if (ss.size() == 0){
- // return out;
- // }
- // vector <int> f;
- // Node *n = ss.l.s;
- // while (n->next != nullptr){
- // f.push_back(n->data);
- // n = n->next;
- // }
- // f.push_back(n -> data);
- // for (int i : f){
- // out << i << ' ';
- // }
- // return out;
- //}
- //class Queue{
- // public:
- // LinkedList l = LinkedList();
- // virtual ~Queue() {
- // }
- // void push(int x){
- // l.pushBack(x);
- // }
- // int pop(){
- // int ans = l.s->data;
- // l.popFront();
- // return ans;
- // }
- // int size(){
- // return l.sz;
- // }
- // int front(){
- // return l.s->data;
- // }
- // void clear(){
- // l.s = nullptr;
- // l.f = nullptr;
- // l.sz = 0;
- // }
- //};
- //ostream& operator << (ostream &out, Queue ss){
- // out << ss.l;
- // return out;
- //}
- int main() {
- int n; cin >> n;
- int a[n];
- for (int i = 0; i < n; i++) cin >> a[i];
- stack<int> st;
- vector <int> ans (n, - 1);
- for (int i = n - 1; i >= 0; i--){
- while (!st.empty() && a[st.top()] <= a[i]) st.pop();
- if (!st.empty()) ans[i] = st.top();
- st.push(i);
- }
- for (int i = 0; i < n; i++) cout << ans[i] << ' ';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement