题意:
n个数字,已经给定k个,数字大小规定从1~P,和不可以超过x,中位数不低于y,求补全的数字
思路:
中位数小了就填y,大了就填1
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <queue>
int a[10000];
int ans[10000];
using namespace std;
int main()
{
int n,p,k,x,y;
int sum=0;
cin>>n>>k>>p>>x>>y;
for(int i=1;i<=k;i++)
{
cin>>a[i];
sum+=a[i];
}
sort(a+1,a+1+k);
int cnt=0;
for(int i=k+1;i<=n;i++)
{
if(a[i/2]>=y)
{
ans[++cnt]=1;
a[i]=1;
sum+=1;
}
else
{
ans[++cnt]=y;
a[i]=y;
sum+=y;
}
sort(a+1,a+1+i);
}
if(sum>x||a[n/2+1]<y)
{
cout<<-1<<endl;
}
else{
for(int i=1;i<=cnt;i++)
cout<<ans[i]<<" ";
}
return 0;
}