QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#418983#6525. New HousesXiaoretaW#RE 0ms3588kbC++201.6kb2024-05-23 16:49:122024-05-23 16:49:13

Judging History

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

  • [2024-05-23 16:49:13]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:3588kb
  • [2024-05-23 16:49:12]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define sz(a) ((int)a.size())
#define all(a) a.begin(), a.end()
#define rep(i, l, r) for (int i = l; i < r; ++i)
#define per(i, r, l) for (int i = r-1; i >= l; --i)
typedef long long ll;
typedef pair<int, int> PI;
template<typename T> bool setmax(T &a, T b) { return (a < b ? a = b, 1 : 0); }
template<typename T> bool setmin(T &a, T b) { return (a > b ? a = b, 1 : 0); }


void solve() {
    int n, m; cin >> n >> m;
    vector<int> a(n), b(n);
    vector<PI> d;
    ll ans = 0;
    int nei = 0, idx = 0;
    for (int i = 0; i < n; i++) {
        cin >> a[i] >> b[i];
        if (a[i] >= b[i]) ans += a[i], --m, ++nei, idx = i;
        else d.push_back(mp(b[i] - a[i], i)); 
    }
    
    ll allNo = 0;
    if (n * 2 - 1 <= m) allNo = accumulate(all(b), 0ll);
    
    sort(all(d));
    reverse(all(d));
    auto maxVal = d[0];
    int left = sz(d);
    for (auto [val, id] : d) {
        if (m - 2 >= left - 1) {
            m -= 2;
            ans += b[id];
        } else {
            while (left--) {
                ans += a[d.back().se];
                d.pop_back();
            }
            break;
        }
    }
    if (nei == 1) {
        ans = max(ans - a[idx] + b[idx], ans - b[maxVal.se] + a[maxVal.se]);
    }
    cout << max(ans, allNo) << '\n';
}
int main() {
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int tt; cin >> tt;
    while (tt--) solve();

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3588kb

input:

3
4 5
1 100
100 1
100 1
100 1
2 2
1 10
1 10
2 3
100 50
1 1000

output:

400
2
1050

result:

ok 3 number(s): "400 2 1050"

Test #2:

score: -100
Runtime Error

input:

100000
6 11
191141536 365120521
799679686 648574232
102602909 467685128
405440859 796808887
384858152 191995380
433392826 195648471
5 13
831367906 510447872
795639287 575551283
811207605 176441088
240156289 946977042
133416463 721098873
5 5
806744021 699586200
630510306 637827160
49223781 641709297
...

output:


result: