优化版小顶堆
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#define x first
#define y second
#define int long long
using namespace std;
const int N = 10010;
typedef pair<int,int>PII;
priority_queue<PII,vector<PII>,greater<PII>>heap;
//小顶堆直接爆炸
int n,m;
int a[N],b[N],c[N],d[N];
int fuck(int i,int x){
return a[i]*x*x+b[i]*x+c[i];
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i]>>c[i];
// for(int j=1;j<=m;j++){
d[i]=1;
// cout<<f<<endl;
heap.push({fuck(i,d[i]),i});
// }
}
for(int i=1;i<=m;i++){
cout<<heap.top().x<<" ";
int now=heap.top().y;
heap.pop();
d[now]++;
heap.push({fuck(now,d[now]),now});
}
return 0;
}