将总血量分配为前两个怪物负责调节(其余怪物血量设为1),通过计算最少/最多可达攻击次数判断可行性并求出前两者的具体血量使得最优攻击次数为k。

void solve(){
    int n,a,k;cin>>n>>a>>k;
    if(n==1){
        if(k==a)cout<<a<<endl;
        else cout<<-1<<endl;
        return;
    }
    if(k<(a+1)/2||k>a-(n/2)){
        cout<<-1<<endl;
        return;
    }
    ll D=a-k;
    ll base=(n-2)/2;
    ll B=D-base;
    if(B<1){
        cout<<-1<<endl;
        return;
    }
    ll A=a-B-(n-2);
    if(A<B){
        cout<<-1<<endl;
        return;
    }
    vll v(n);
    v[0]=A;v[1]=B;
    for(int i=2;i<n;++i)v[i]=1;
    for(int i:v)cout<<i<<" ";
    cout<<endl;
}