这道题其实直接暴力也能解决 ,用stl做思路很简单,虽然耗时会久一些。注意的点是结构体的优先级设置,效果与sort是反向的。
#include<cstdio>
#include<queue>
using namespace std;
struct node
{
int A,B,C,x,s;
friend bool operator <(node a,node b){
return a.s>b.s;
}
};
int n,m,ans;
int main()
{
scanf("%d%d",&n,&m);
priority_queue<node> q;
node p;
p.x=1;
for(int i=0;i<n;i++)
{
scanf("%d%d%d",&p.A,&p.B,&p.C);
p.s=p.A+p.B+p.C;
q.push(p);
}
while(m--)
{
p=q.top();
q.pop();
ans=p.s;
p.x+=1;
p.s=p.A*p.x*p.x+p.B*p.x+p.C;
q.push(p);
printf("%d",ans);
if(m) printf(" ");
}
return 0;
}