Hướng dẫn giải của TS10 TP.HCM 2024 - Tuyệt chiêu

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 làm lời giải.


Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.

Gợi ý

  • Dùng mảng để lưu lại lần sử dụng cuối cùng của từng tuyệt chiêu.
#include<iostream>
#include<cstring>

using namespace std;
int a[1000005];
int main()
{
    freopen("TUYETCHIEU.INP", "r", stdin);
    freopen("TUYETCHIEU.OUT", "w", stdout);
    int n, k;
    cin >> n >> k;  

    // Lưu lại tuyệt chiêu vi phạm(nếu có) có mã nhỏ nhất
    int ans = 1000005;

    for  (int i = 1; i <= 1000000; i++) {
        a[i] = 0;
    }

    for (int i = 1; i <= n; i++) {
        int x;
        cin >> x;
        // Nếu tuyệt chiêu được sử dụng, lưu lại lần sử dụng đầu tiên
        if (a[x] == 0) {
            a[x] = i;
        }
        else {
            // Kiểm tra tuyệt chiêu có vi phạm không
            if (a[x] + k > i) {
                ans = min(ans, x);
            }
            else {
                a[x] = i;
            }
        }
    }
    if (ans != 1000005) {
        cout << ans;
    }
    else {
        cout << -1;
    }
    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.

Hỗ Trợ CLAOJ
QR Code