
#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