比赛 |
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;
}