站外题求调
  • 板块题目总版
  • 楼主laijingnian
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/16 15:16
  • 上次更新2024/8/16 17:17:22
查看原帖
站外题求调
757432
laijingnian楼主2024/8/16 15:16

#include <bits/stdc++.h>

using namespace std;

#define int long long
const int N = 100010;

struct Node
{
	int x;
	int pos;
	bool operator < (const Node &a) const
	{
		return x < a.x;
	}
	bool operator > (const Node &a) const
	{
		return x > a.x;
	}
};

int n,m,a[N],b[N],c[N];
priority_queue<Node,vector<Node>,greater<Node> > q; 
signed main()
{
	cin >> n >> m;
	for(int i = 1;i <= n;i++) cin >> a[i] >> b[i] >> c[i];
	
	for(int i = 1;i <= n;i++) 
	{
		if(abs(b[i]) % (2 * a[i]) == 0)
			q.push({-b[i] / (2 * a[i]),i});
		else
		{
			int x1,x2;
			x1 = ceil(-b[i] / (2 * a[i]));
			x2 = floor(-b[i] / (2 * a[i]));
			q.push({x1,i}); q.push({x2,i});
		}
	}
	
	for(int i = 1;i <= m;i++)
	{
		auto p = q.top();
		q.pop();
		cout << a[p.pos] * p.x * p.x + b[p.pos] * p.x + c[p.pos] << " ";
		q.push({p.x + 1,p.pos}); q.push({p.x - 1,p.pos});
	}
	return 0;
}

/*
in:
3 20
4 5 3
3 4 5
1 7 1
out:
-11 -11 -9 -9 -5 -5 1 1 2 3 4 5 9 9 9 9 12 12 19 19
*/

情况:Wrong Answer\textcolor{red}{Wrong\ Answer}

2024/8/16 15:16
加载中...