ex2.cpp

来自「tongji acm-online judge solution」· C++ 代码 · 共 61 行

CPP
61
字号
//Ural 1403
//by Amber

#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;

struct t_order
{
	int time, money, index;
};
bool order_time_cmp(const t_order &a, const t_order &b)
{
	return a.time < b.time;
}
struct order_money_cmp
{
	bool operator () (const t_order &a, const t_order &b) const
	{
		return a.money < b.money;
	}
};
int main()
{
	int N;
	cin >> N;
	vector<t_order> orders(N + 1);
	orders[0].time=0;
	for (int i = 1; i <= N; i++)
	{
		cin >> orders[i].time >> orders[i].money;
		orders[i].index = i;
	}
	sort(orders.begin(), orders.end(), order_time_cmp);
	
	priority_queue<t_order, vector<t_order>, order_money_cmp> queue;
	vector<int> result;
	int i = N;
	do
	{
		int cur = orders[i].time;
		do
			queue.push(orders[i--]);
		while (orders[i].time == cur);
		int times = cur - orders[i].time;
		do
		{
			result.push_back(queue.top().index);
			queue.pop();
		}
		while (queue.size() > 0 && (--times) > 0);
	}
	while (i > 0);

	cout << result.size() << endl;
	for (int i = result.size() - 1; i >= 0; i--)
		cout << result[i] << ' ';
	cout << endl;
}

⌨️ 快捷键说明

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