网站开发公,软件平台下载,网页浏览器,长春网站设计公司贪心 如果有0先变成非0 如果负数的个数 应该变为偶数 之后就是每次将绝对值最小的值加K #includebits/stdc.h
using namespace std;
const int MAXN 2e55;
typedef long long ll;int N,K,X;
ll A[MAXN];
int tag[MAXN];
struct Node{ll x; int id;Node(ll a0, int … 贪心 如果有0先变成非0 如果负数的个数 应该变为偶数 之后就是每次将绝对值最小的值加K #includebits/stdc.h
using namespace std;
const int MAXN 2e55;
typedef long long ll;int N,K,X;
ll A[MAXN];
int tag[MAXN];
struct Node{ll x; int id;Node(ll a0, int b0):x(a),id(b){}bool operator (const Node T) const {return x T.x;}
};
ll Abs(ll x) {if(x 0) x * -1;return x;
}
void doo(int id,ll num) {if(A[id] 0) A[id] num;else A[id] - num;
}
priority_queueNode Q;
int main(){while(~scanf(%d %d %d,N,K,X)) {memset(tag,0,sizeof(tag));while(!Q.empty()) Q.pop();// int c1 0; int c2 0; int c3 0; // pos zero negfor(int i 1; i N; i) {scanf(%lld,A[i]);Q.push(Node(Abs(A[i]), i));}for(int i 1; i N; i) {if(A[i] 0) c3 ; }while(K) {ll x Q.top().x; int id Q.top().id;Q.pop();if(x 0) {if(~c31) {A[id] -X;c3 ;}else {A[id] X; }}else if(~c31){ll tt (xX)/X; if(tt K) {doo(id, -1ll*K*X);break;}else {doo(id,-1ll*tt*X); K - tt; K;}c3 ;}else {doo(id,X);}
// printf(%d %lld\n,id,A[id]);Q.push(Node(Abs(A[id]),id)); K--;}for(int i 1; i N; i) printf(%lld ,A[i]); printf(\n);}return 0;
}转载于:https://www.cnblogs.com/Basasuya/p/8433742.html