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