比赛 ?板子大赛 评测结果 WWWWWWWWWW
题目名称 最小函数值 最终得分 0
用户昵称 小福鑫 运行时间 1.653 s
代码语言 C++ 内存使用 8.73 MiB
提交时间 2026-01-17 10:41:05
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,cnt[10000001],ans[10000001],z;
priority_queue<int> q;
struct e{
    int a,b,c;
}p[10000001];
bool cmp(e x,e y){
    if(x.a==y.a&&x.b==y.b){
        return x.c<y.c;
    }
    if(x.a==y.a){
        return x.b<y.b;
    }
    return x.a<y.a;
}
int main(){
    freopen("minval.in","r",stdin);
    freopen("minval.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>p[i].a>>p[i].b>>p[i].c;
    }
    sort(p+1,p+n+1,cmp);
    for(int i=1;i<=n;i++){
        z=i;
        for(int j=1;j<=n;j++){
            int w=p[j].a*i*i+p[j].b*i+p[j].c;
            q.push(w);
        }
        if(q.size()>=m){
            break;
        }
    } 
    while(q.size()>m){
        q.pop();
    }
    cnt[z-1]=1,cnt[z]=n;
    for(int i=z+1;i<=1001;i++){
        if(cnt[i-2]==cnt[i-1]){
            break;
        }
        int qq=cnt[i-2];
//        cout<<i<<" "<<cnt[i-1]<<endl;
        cnt[i]=cnt[i-1];
        for(int j=qq;j<=cnt[i-1];j++){
            int w=p[j].a*i*i+p[j].b*i+p[j].c; 
            if(q.top()>=w){
                p[++cnt[i]].a=p[j].a,p[cnt[i]].b=p[j].b,p[cnt[i]].c=p[j].c;
                q.push(w);
                if(q.size()>m){
                    q.pop();
                }
            }
        }
    }
    for(int i=1;i<=m;i++){
        ans[i]=q.top();
        q.pop();
    }
    for(int i=m;i>=1;i--){
        cout<<ans[i]<<" ";
    }
    return 0;
}