QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#419018#6525. New HousesXiaoretaW#WA 99ms3744kbC++201.8kb2024-05-23 17:01:142024-05-23 17:01:15

Judging History

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

  • [2024-05-23 17:01:15]
  • 评测
  • 测评结果:WA
  • 用时:99ms
  • 内存:3744kb
  • [2024-05-23 17:01:14]
  • 提交

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),nh,h;
    ll ans=0;
    for(int i=0;i<n;i++){
        cin>>a[i]>>b[i];
        if(a[i]>=b[i]){ans+=a[i];m--;h.push_back(i);}
        else nh.push_back(i);
    }

    if(h.size()==0&&nh.size()*2-1<=m){
        for(int i=0;i<nh.size();i++){
            ans+=b[nh[i]];
        }
        cout<<ans<<'\n';
        return;
    }
    vector<pair<int,int>> c(nh.size());
    for(int i=0;i<nh.size();i++){
        c[i]={b[i]-a[i],nh[i]};
    }
    sort(c.begin(),c.end());

    if(h.size()==1&&nh.size()*2<=m){
        ans=0;
        if(nh.size()==0){
            ans=b[h[0]];
            cout<<ans<<'\n';
            return ;
        }
        for(int i=1;i<c.size();i++){
            ans+=b[c[i].second];
        }
        ans+=max(a[h[0]]+a[c[0].second],b[h[0]]+b[c[0].second]);
        cout<<ans<<'\n';
        return;
    }
    int i=0;
    int d=c.size();
    while(i<c.size()&&d*2>m){
        ans+=a[c[i].second];
        i++;
        d--;
        m--;
    }
    for(;i<c.size();i++){
        ans+=b[c[i].second];
    }
    cout<<ans<<'\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: 0ms
memory: 3536kb

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: 99ms
memory: 3744kb

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:

3247545200
4106290713
2653993029
5122532137
5570513606
2031887824
2044500908
1857678917
6815058419
2237593918
6646615756
4972659441
3690874076
5497726904
5513905900
5404435094
4705403467
2411992217
3430587752
4652417175
3921151709
1271949960
2692878616
3833748807
2716183054
974485573
6464787173
8839...

result:

wrong answer 12th numbers differ - expected: '5638337819', found: '4972659441'