比赛 20120413 评测结果 AAAAAAAAAAAA
题目名称 工作进度 最终得分 100
用户昵称 201101 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-13 19:55:29
显示代码纯文本
/*
UID:cheepok
PID:joba
LANG:C++
*/

#include<stdio.h>
#include<stdlib.h>
#include<set>

using namespace std;

typedef long long Int;

multiset <int> s;

struct orz
{int x,y;}
a[100001];

int n;

Int ans;

int cmp(const void *a,const void *b)
{return (*(orz *)a).x-(*(orz *)b).x;}

int main()
{
	freopen("joba.in","r",stdin);
	freopen("joba.out","w",stdout);
	int i;
	multiset <int> ::iterator it;
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);
	qsort(a+1,n,sizeof(orz),cmp);
	for(i=1;i<=n;i++)
	{
		ans+=a[i].y;
		s.insert(a[i].y);
		if(s.size()>a[i].x)
		{
			it=s.begin();
			ans-=*it;
			s.erase(it);
		}
	}
	printf("%lld\n",ans);
	return 0;
}