记录编号 46643 评测结果 AAAAAAAAAAAA
题目名称 [USACO Open09] 工作进度 最终得分 100
用户昵称 GravatarTBK 是否通过 通过
代码语言 C++ 运行时间 0.307 s
提交时间 2012-10-29 08:58:38 内存使用 1.53 MiB
显示代码纯文本
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <set>
#include <algorithm>
#define MAXN 0x7fffffff
using namespace std;
long long a,b,c,d,t;
struct fun
{
	long long x,y;
}f[100000];
multiset <long long> s; 
multiset <long long> ::iterator z;
int Compare(const void*elem1,const void*elem2)
{
	struct fun *elem3=(struct fun *)elem1;
	struct fun *elem4=(struct fun *)elem2;
	return elem3->x - elem4->x;
}
int main(void)
{
    freopen ("joba.in","r",stdin);
    freopen ("joba.out","w",stdout);
	scanf("%d",&a);
	for (b=0;b<a;b++) scanf("%d%d",&f[b].x,&f[b].y);
	qsort(f,a,sizeof(fun),Compare);
	for (b=0;b<a;b++)
	{
		if (f[b].x>s.size()) 
		{
			s.insert(f[b].y);
			t+=f[b].y;
		}
			else 
			{
				c=*s.begin();
				if (f[b].y>c)
				{
					s.erase(s.begin());
					t-=c;
					s.insert(f[b].y);
					t+=f[b].y;
				}
			}
	}
	printf("%lld",t);
	fclose(stdin);
    fclose(stdout);
    return 0;
}