⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2010.txt

📁 北大ACM题目例程 详细的解答过程 程序实现 算法分析
💻 TXT
字号:

#include<stdio.h>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;

priority_queue< int ,vector<int> > q;

typedef pair< int, int > cow;

cow c[1000000];
int money[100000];
int n, m, f;

int main()
{
	int i, v;

	scanf( "%d %d %d", &n, &m, &f );
	
	for( i=0; i<m; i++ )
		scanf( "%d %d", &c[i].first, &c[i].second );

	sort( c, c+m );

	for( v=0, i=0; i<n/2; i++ )
	{
		v += c[i].second;
		q.push( c[i].second );
	}
	money[i] += v;

	for( ; i<m-n/2-1 ; i++ )
	{
		if( q.top() > c[i].second )
		{
			v -= q.top();
			q.pop();
			v += c[i].second;
			q.push( c[i].second );
		}
		money[i+1] += v;
	}

	while(!q.empty())q.pop();
	
	for( v=0,i=m-1; i>=m-n/2; i-- )
	{
		v += c[i].second;
		q.push( c[i].second );
	}
	

	for( ; i>=n/2 ;i-- )
	{
		money[i] += v;
		if( money[i] + c[i].second <= f )break;

		if( q.top() > c[i].second )
		{
			v -= q.top();
			q.pop();
			v += c[i].second;
			q.push( c[i].second );
		}
	}

	if( i>=n/2 ) printf( "%d\n", c[i].first );
	else printf( "%d\n", -1 );

	return 0;
}

		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -