参考http://www.cnblogs.com/qscqesze/p/5925893.html
题意
给你n个数,你可以操作k次,每次使得一个数增加x或者减小x
你要使得最后所有数的乘积最小,问你最后这个序列长什么样子。
#define rson md+1,rr,rs
set<pii>se;
LL a[N];
int main(){
int n,k,x;
sf("%d%d%d",&n,&k,&x);
int sig=0;
rep(i,1,n){
cin>>a[i];
if(a[i]<0)sig^=1;
se.insert(MP(abs(a[i]),i));
}
for(int i=1;i<=k;++i){
int pos=se.begin()->second;
se.erase(se.begin());
if(a[pos]<0)sig^=1;
if(sig)a[pos]+=x;
else a[pos]-=x;
if(a[pos]<0)sig^=1;
se.insert(MP(abs(a[pos]),pos));
}
for(int i=1;i<=n;++i){
cout<<a[i]<<' ';
}puts("");
}