先贪心全填 减去 减去 ,如果 是奇数,那么 值的上限加 (这个 可以分配给第二个怪物血量)。

接着贪心将剩余血量分配给前两个怪物,第一个怪物血量加 ,其余的给第二个怪物。

最短代码,实现:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a,k;
    cin>>n>>a>>k;
    a-=n,k-=n+1>>1;
    if(a<k||k+k<a-(n&1)) cout<<-1;
    else for(int i=1,w;i<=n;++i)
        w=min(a,k+(i==2)),cout<<w+1<<' ',a-=w;
}