青训营X豆包MarsCode 技术训练营第一课 | 豆包MarsCode AI 刷题

39 阅读1分钟
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int solution(int n, int k, std::vector<int> data) {
    // Edit your code here

    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
    int ans = 0;
    for(int i = 0; i < n; ++i) {
        while(!pq.empty() && i - pq.top().second >= k) {    // 买不到的不要
            pq.pop();
        }
        while(!pq.empty() && data[i] <= pq.top().first) {   // 贵的不要
            pq.pop();
        }
        pq.push({data[i], i});
        ans += pq.top().first;
    }

    return ans;
}

int main() {
    // Add your test cases here

    std::cout << (solution(5, 2, {1, 2, 3, 3, 2}) == 9) << std::endl;
    return 0;
}