观察每次机会可用的范围

void _()
{
    int n, k;
    cin >> n >> k;

    vector<int> a(n + 1);
    for (int i = 1; i <= n; i++)
        cin >> a[i];

    priority_queue<int> pq;
    for (int i = n; i; i--)
    {
        if (i % k == 0 && pq.size())
            pq.pop();
        pq.push(a[i]);
    }

    int ans = 0;
    while (pq.size())
    {
        ans += pq.top();
        pq.pop();
    }

    cout << ans << '\n';
}