QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#611305 | #7622. Yet Another Coffee | cy325 | WA | 0ms | 3528kb | C++20 | 1.3kb | 2024-10-04 20:17:29 | 2024-10-04 20:17:29 |
Judging History
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'