比赛 20120413 评测结果 AAAAAAAAAAAA
题目名称 工作进度 最终得分 100
用户昵称 TBK 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-13 22:22:04
显示代码纯文本
#include <iostream> 
#include <cmath> 
#include <cstring> 
#include <string> 
#include <cstdio> 
#include <cstdlib> 
#include <iomanip> 
#include <set> 
#include <algorithm> 
using namespace std; 
int b,c,d;
long long s;
multiset<int> t;
struct fun
{
	int x;
	int y;
}f[100000];
set <int>::iterator z,k;
int Compare(const void*elem1,const void*elem2)
{
	struct fun*elem3=(struct fun *)elem1;
	struct fun*elem4=(struct fun *)elem2;
	if (elem3->x != elem4->x) return elem3->x - elem4->x;
		else return elem4->y - elem3->y;
}
int main(void) 
{    
    freopen("joba.in","r",stdin); 
    freopen("joba.out","w",stdout); 
    scanf("%d",&b);
	for (c=0;c<b;c++) scanf("%d%d",&f[c].x,&f[c].y);
	qsort(f,b,sizeof(fun),Compare);
	for (c=0;c<b;c++)
		if (f[c].x>t.size()) t.insert(f[c].y);
			else 
			{
				z=t.begin();
				d=*z;
				if (f[c].y>d) 
				{
					t.erase(z);
					t.insert(f[c].y);
				}
			}
	z=t.begin();
	k=t.end();
	while (z!=k)
	{
		s+=*z;
		z++;
	}
	printf("%lld",s);
    fclose(stdin); 
    fclose(stdout); 
    return 0; 
}