记录编号 358404 评测结果 AAAAAAAAAA
题目名称 [CTSC 2007]挂缀 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 C++ 运行时间 0.632 s
提交时间 2016-12-16 13:28:49 内存使用 6.41 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int n;ll c[N],w[N];
typedef pair<ll,ll> pr;
pr p[N];
bool cmp(const pr &x,const pr &y){
	return x.first+x.second<y.first+y.second;
}
priority_queue<ll> Q;
int main()
{
	freopen("pendant.in","r",stdin);
	freopen("pendant.out","w",stdout);
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
		scanf("%lld%lld",&p[i].first,&p[i].second);
	sort(p+1,p+n+1,cmp);
	for (int i=1;i<=n;i++)
		c[i]=p[i].first,w[i]=p[i].second;
	long long W=0;int ans=0;
	for (int i=1;i<=n;i++)
	if (c[i]>=W) ans++,W+=w[i],Q.push(w[i]);else
	if (w[i]<Q.top()) W+=w[i]-Q.top(),Q.pop(),Q.push(w[i]);
	printf("%d\n%lld\n",ans,W);
	return 0;
}