STACK - Truy vấn với ngăn xếp

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, JavaScript, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Bạn được cho một ngăn xếp rỗng và một số truy vấn với ngăn xếp này. Các truy vấn là những truy vấn cơ bản của ngăn xếp: Đẩy vào, lấy ra, in ra phần tử ở đỉnh, các truy vấn có dạng:

  • ~1\ n:~ Đẩy số nguyên n vào ngăn xếp
  • ~2:~ Loại bỏ phần tử ở đầu ngăn xếp (nếu ngăn xếp rỗng thì thao tác này không có hiệu lực)
  • ~3:~ In ra phần tử ở đỉnh ngăn xếp (không lấy ra khỏi ngăn xếp, nếu ngăn xếp rỗng thì in ra Empty! )

Input

  • Dòng đầu chứa số nguyên dương ~T~ là số truy vấn;
  • ~T~ dòng tiếp theo, mỗi dòng chứa một truy vấn.

Giới hạn:

  • ~1 ≤ T ≤ 10^5; |n| ≤ 10^9~.

Output

  • Ứng với mỗi truy vấn loại ~3~, in ra kết quả tương ứng trên một dòng.

Sample

Input #1
6
1 15
1 20
2
3
2
3
Output #1
15
Empty!

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 0
    mducc  đã bình luận lúc 27, Tháng 4, 2026, 6:52

    spoil! ý tưởng

    dùng stack 
    truy vấn loại 1: dùng hàm push 
    truy vấn loại 2: check rỗng và dùng hàm pop
    truy vấn loại 3: check rỗng có thì in ra Empty! không thì in ra top
    

    code tham khảo (C++)

        #include <bits/stdc++.h>
    
        using namespace std;
    
        int main() {
            ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    
            stack<int> s;
            int t;
            cin >> t;
            while (t--)
            {
                int x;
                cin >> x;
                if (x == 1)
                {
                    int y;
                    cin >> y;
                    s.push(y);
                }
                if (x == 2)
                {
                    if (!s.empty()) s.pop();
                }
                if (x == 3)
                {
                    if (s.empty()) cout << "Empty!" << '\n';
                    else cout << s.top() << '\n';
                }
            }
        }
    

  • 0
    congtyluuthaibao1978  đã bình luận lúc 28, Tháng 11, 2025, 6:16

    include <bits/stdc++.h>

    using namespace std;

    int main() { ios::syncwithstdio(false); cin.tie(nullptr);

    int T;
    if (!(cin >> T)) return 0;
    stack&lt;long long> st;
    
    while (T--) {
        int type;
        cin >> type;
        if (type == 1) {
            long long n;
            cin >> n;
            st.push(n);
        } else if (type == 2) {
            if (!st.empty()) st.pop();
        } else if (type == 3) {
            if (st.empty()) {
                cout << "Empty!\n";
            } else {
                cout << st.top() << "\n";
            }
        }
    }
    return 0;
    

    }