QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#611305#7622. Yet Another Coffeecy325WA 0ms3528kbC++201.3kb2024-10-04 20:17:292024-10-04 20:17:29

Judging History

你现在查看的是最新测评结果

  • [2024-10-04 20:17:29]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3528kb
  • [2024-10-04 20:17:29]
  • 提交

answer

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

// 直接线性查找区间 [l, r] 中的最小元素的索引
ll find_min(const vector<pair<ll, ll>>& v, ll l, ll r) {
    ll min_idx = l;
    for (ll i = l; i <= r; ++i) {
        if (v[i].first < v[min_idx].first) {
            min_idx = i;
        }
    }
    return min_idx;
}

void solve() {
    ll n, m;
    cin >> n >> m;

    vector<pair<ll, ll>> v(n + 1);  // 存储物品的价格和索引
    for (ll i = 1; i <= n; ++i) {
        ll x;
        cin >> x;
        v[i] = {x, i};  // {价格, 索引}
    }

    // 处理每张优惠券
    while (m--) {
        ll r, w;
        cin >> r >> w;
        auto idx = find_min(v, 1, r);  // 找到区间 [1, r] 内最小的物品
        v[idx].first -= w;  // 应用优惠券,减少该物品的价格
    }

    // 对所有物品按价格排序
    sort(v.begin() + 1, v.end(), [](const auto &a, const auto &b) {
        return a.first < b.first;
    });

    // 输出每个 k 的累计最小花费
    ll res = 0;
    for (ll i = 1; i <= n; ++i) {
        res += v[i].first;
        cout << res << ' ';
    }
    cout << endl;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll t;
    cin >> t;
    while (t--) {
        solve();
    }

    return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3528kb

input:

5
10 14
17 37 59 65 53 73 68 177 160 111
10 177
5 193
2 30
3 63
2 339
3 263
5 178
2 190
9 23
10 328
10 200
9 8
3 391
6 230
12 9
152 306 86 88 324 59 18 14 42 260 304 55
3 50
2 170
1 252
7 811
1 713
7 215
10 201
4 926
8 319
19 20
182 74 180 201 326 243 195 31 170 263 284 233 48 166 272 281 179 116 31...

output:

-2596 -2559 -2506 -2447 -2382 -2314 -2241 -2130 -1970 -1793 
-3455 -3441 -3423 -3387 -3345 -3290 -3231 -3143 -2883 -2579 -2273 -1949 
-4500 -6315 -6422 -6374 -6258 -6092 -5922 -5743 -5563 -5368 -5167 -4934 -4691 -4428 -4156 -3875 -3591 -3272 -2946 
-3219 -2987 -2572 -2140 -1707 -1238 -768 -274 243 1...

result:

wrong answer 11th numbers differ - expected: '-3505', found: '-3455'