QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#419035#6525. New HousesXiaoretaW#WA 93ms3880kbC++202.5kb2024-05-23 17:10:442024-05-23 17:10:45

Judging History

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

  • [2024-05-23 17:10:45]
  • 评测
  • 测评结果:WA
  • 用时:93ms
  • 内存:3880kb
  • [2024-05-23 17:10:44]
  • 提交

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(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i] >> b[i];
        d[i] = mp(abs(a[i] - b[i]), i);
    }
    sort(all(d), [&](PI x, PI y){
        if (x.fi != y.fi)
            return x.fi < y.fi;
        return a[x.se] > b[x.se];
    });
    vector<ll> pref(n), suf(n);
    for (int i = 0; i < n; i++) {
        pref[i] = a[d[i].se] + (i == 0 ? 0 : pref[i - 1]);
    }
    for (int i = n - 1; i >= 0; i--) {
        suf[i] = b[d[i].se] + (i == n - 1 ? 0 : suf[i + 1]);
    }
    ll ans = max(pref[n - 1], (2 * n - 1 <= m ? suf[0] : 0));
    for (int i = 1; i < n; i++) {
        if (m - i - 1 >= (n - i - 1) * 2)
            setmax(ans, pref[i] + suf[i + 1]);
    }
    cout << ans << '\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));
    // PI maxVal = {0, 0};
    // if (nei == 1 && sz(d)) maxVal = d.back();
    // int left = sz(d);

    // for (auto [val, id] : d) {
    //     if (m - 2 >= left - 1) {
    //         m -= 2;
    //         ans += b[id];
    //         --left;
    //     } else {
    //         while (left--) {
    //             ans += a[d.back().se];
    //             d.pop_back();
    //         }
    //         break;
    //     }
    // }
    // if (nei == 1 && sz(d)) {
    //     ans = max(ans - a[idx] + b[idx], ans - b[maxVal.se] + a[maxVal.se]);
    // } else if (nei == 1) {
    //     ans = ans - a[idx] + b[idx];
    // }
    // 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;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3664kb

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
Wrong Answer
time: 93ms
memory: 3880kb

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:

3073566215
3518608303
2654094262
3884337277
5570614599
2031887824
2044601805
2542231737
6472804298
2570825482
6035175280
5080086263
2976381513
4920900725
5513905933
5218687743
4705403467
2381297725
3430587752
4900032399
3408982577
1879026957
3011791136
2991554511
2716183054
974485573
4826197632
8839...

result:

wrong answer 1st numbers differ - expected: '3247545200', found: '3073566215'