rt,提交记录。
#include<iostream>
using namespace std;
int n,m;
long long a[10004],b[10004],c[10004];
struct Q{
int i,j;
long long data;
}q[10004];
int tot;
void pushup(int x){
if(x==1)return;
int t=(x>>1);
if(q[x].data<q[t].data){
swap(q[x],q[t]);
pushup(t);
}
}
void pushdown(int x){
int t=(x<<1);
if(t>tot)return;
if(t<tot&&q[t+1].data<q[t].data)t++;
if(q[x].data>q[t].data){
swap(q[x],q[t]);
pushdown(t);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i]>>c[i];
tot++;
q[tot].i=i,q[tot].j=1,q[tot].data=a[i]+b[i]+c[i];
pushup(tot);
}
while(m--){
cout<<q[1].data<<' ';
swap(q[1],q[tot]);
tot--;
pushdown(1);
tot++;
q[tot].j++,q[tot].data=a[q[tot].i]*q[tot].j*q[tot].j+b[q[tot].i]*q[tot].j+c[q[tot].i];
}
return 0;
}