Hướng dẫn giải của [200 đề thầy Đức] Bài 171: Chơi game


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

An và Bình hợp tác chơi trò chơi có n cấp độ. Hỏi hai bạn có cùng vượt qua được toàn bộ các cấp độ hay không, tức là mỗi cấp độ từ 1 đến n có ít nhất một người vượt qua được.

Cách làm

Dùng mảng vuot[1..n] đánh dấu cấp độ nào đã có người vượt được. Đọc p và p số của An rồi đánh dấu từng số. Đọc q và q số của Bình rồi đánh dấu tương tự. Cuối cùng kiểm tra mọi i từ 1 đến n: nếu đều được đánh dấu thì in YES, nếu có cấp nào chưa được đánh dấu thì in NO.

Bẫy: p hoặc q có thể bằng 0, khi đó không có số nào để đọc thêm.

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    // vuot[i] = true nếu có ít nhất một bạn vượt qua được cấp độ i
    bool vuot[105];
    for (int i = 0; i <= n; i++) {
        vuot[i] = false;
    }
    // Cấp độ An vượt được
    int p;
    cin >> p;
    for (int i = 0; i < p; i++) {
        int x;
        cin >> x;
        vuot[x] = true;
    }
    // Cấp độ Bình vượt được
    int q;
    cin >> q;
    for (int i = 0; i < q; i++) {
        int x;
        cin >> x;
        vuot[x] = true;
    }
    // Kiểm tra xem mọi cấp độ từ 1 đến n đã có người vượt qua chưa
    bool du = true;
    for (int i = 1; i <= n; i++) {
        if (!vuot[i]) {
            du = false;
        }
    }
    if (du) {
        cout << "YES\n";
    } else {
        cout << "NO\n";
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.