#include <iostream>
#include <vector>
#include <string>

using namespace std;

class SachGiaoKhoa {
    string maSach;
    string tenSach;
    string nhaXuatBan;
    int soLuong;
    double donGia;
    int tinhTrang;

public:
    void nhap() {
        cout << "Nhap ma sach: ";
        getline(cin, maSach);
        cout << "Nhap ten sach: ";
        getline(cin, tenSach);
        cout << "Nhap nha xuat ban: ";
        getline(cin, nhaXuatBan);
        cout << "Nhap so luong: ";
        cin >> soLuong;
        cout << "Nhap don gia: ";
        cin >> donGia;
        cout << "Nhap tinh trang (0: cu, 1: moi): ";
        cin >> tinhTrang;
        cin.ignore();
    }

    void xuat() const {
        cout << "Ma sach: " << maSach << endl;
        cout << "Ten sach: " << tenSach << endl;
        cout << "Nha xuat ban: " << nhaXuatBan << endl;
        cout << "So luong: " << soLuong << endl;
        cout << "Don gia: " << donGia << endl;
        cout << "Tinh trang: " << (tinhTrang ? "moi" : "cu") << endl;
    }

    double tinhThanhTien() {
        return soLuong * donGia * (tinhTrang ? 1 : 0.5);
    }

    string getNhaXuatBan() const {
        return nhaXuatBan;
    }
};

class SachThamKhao {
    string maSach;
    string tenSach;
    string nhaXuatBan;
    int soLuong;
    double donGia;
    double thue;

public:
    void nhap()  {
        cout << "Nhap ma sach: ";
        getline(cin, maSach);
        cout << "Nhap ten sach: ";
        getline(cin, tenSach);
        cout << "Nhap nha xuat ban: ";
        getline(cin, nhaXuatBan);
        cout << "Nhap so luong: ";
        cin >> soLuong;
        cout << "Nhap don gia: ";
        cin >> donGia;
        cout << "Nhap thue: ";
        cin >> thue;
        cin.ignore();
    }

    void xuat() const {
        cout << "Ma sach: " << maSach << endl;
        cout << "Ten sach: " << tenSach << endl;
        cout << "Nha xuat ban: " << nhaXuatBan << endl;
        cout << "So luong: " << soLuong << endl;
        cout << "Don gia: " << donGia << endl;
        cout << "Thue: " << thue << endl;
    }

    double tinhThanhTien() {
        return soLuong * donGia + thue;
    }
};

int main() {
    vector<SachGiaoKhoa> dsSachGiaoKhoa;
    vector<SachThamKhao> dsSachThamKhao;
    int n;

    cout << "Nhap so sach giao khoa: ";
    cin >> n;
    cin.ignore();

    for (int i = 0; i < n; ++i) {
        SachGiaoKhoa sgk;
        cout << "Nhap thong tin sach giao khoa thu " << i + 1 << ":" << endl;
        sgk.nhap();
        dsSachGiaoKhoa.push_back(sgk);
    }

    cout << "Nhap so sach tham khao: ";
    cin >> n;
    cin.ignore();

    for (int i = 0; i < n; ++i) {
        SachThamKhao stk;
        cout << "Nhap thong tin sach tham khao thu " << i + 1 <<":" << endl;
        stk.nhap();
        dsSachThamKhao.push_back(stk);
    }

    cout << "Danh sach sach giao khoa:" << endl;
    for (const SachGiaoKhoa& sgk : dsSachGiaoKhoa) {

        sgk.xuat();
    }

    cout << "Danh sach sach tham khao:" << endl;
    for (const SachThamKhao& stk : dsSachThamKhao) {

        stk.xuat();
    }

    string nxb;
    cout << "Nhap ten nha xuat ban can tim: ";
    getline(cin, nxb);

    cout << "Sach giao khoa cua nha xuat ban " << nxb << ":" << endl;
    for (const SachGiaoKhoa& sgk : dsSachGiaoKhoa) {
        if (sgk.getNhaXuatBan() == nxb) {
            sgk.xuat();
        }
    }

    return 0;
}
Thêm vào hàm main: Tính thành tiền mà thư viện trường học phải trả cho từng loại sách và hiển thị thông tin chi tiết những sách nào có thành tiền phải trả ít nhất. dựa vào hàm tinhThanhTien()