比赛 20251001国庆欢乐赛1 评测结果 AWWWWWWWWW
题目名称 有n种物品 最终得分 10
用户昵称 会挽弯弓满月 运行时间 0.187 s
代码语言 C++ 内存使用 4.31 MiB
提交时间 2025-10-01 10:15:48
显示代码纯文本
#include <bits/stdc++.h> 
typedef long long ll;
using namespace std;
const ll N=1e5+10;
ll n,ans;
priority_queue<ll> q;
struct node{
    ll a,b;
}s[N];
bool cmp(node x,node y){
    if(x.a==y.a) return x.b>y.b;
    return x.a>y.a;
}
ll en,cnt;
ll sum[3];
int main(){
    freopen("nit.in","r",stdin);
    freopen("nit.out","w",stdout);
    scanf("%lld",&n);en=n*2;
    for(ll i=1;i<=n;i++) scanf("%lld%lld",&s[i].a,&s[i].b);
    sort(s+1,s+n+1,cmp);cnt=1;
    ll x,y;
    for(ll ti=1;ti<=en;ti++){
        if(q.empty()){
            sum[ti&1]+=s[cnt].a;
            q.push(s[cnt].b);
            cnt++;
            continue;
        }
        if(cnt>n){
            sum[ti&1]+=q.top();
            q.pop();
            continue;
        }
        x=q.top();y=s[cnt].a;
        if(x>=y){
            sum[ti&1]+=x;
            q.pop();
        }
        else{
            sum[ti&1]+=y;
            q.push(s[cnt].b);
            cnt++;
        }
    }
    ans=sum[1]-sum[0];
    printf("%lld",ans);
    return 0;
}