time limit per test2 seconds

memory limit per test256 megabytes

inputstandard input

outputstandard output

Recently Maxim has found an array of n integers, needed by no one. He immediately come up with idea of changing it: he invented positive integer x and decided to add or subtract it from arbitrary array elements. Formally, by applying single operation Maxim chooses integer i (1 ≤ i ≤ n) and replaces the i-th element of array ai either with ai + x or with ai - x. Please note that the operation may be applied more than once to the same position.

Maxim is a curious minimalis, thus he wants to know what is the minimum value that the product of all array elements (i.e. ) can reach, if Maxim would apply no more than k operations to it. Please help him in that.

Input

The first line of the input contains three integers n, k and x (1 ≤ n, k ≤ 200 000, 1 ≤ x ≤ 109) — the number of elements in the array, the maximum number of operations and the number invented by Maxim, respectively.

The second line contains n integers a1, a2, …, an () — the elements of the array found by Maxim.

Output

Print n integers b1, b2, …, bn in the only line — the array elements after applying no more than k operations to the array. In particular, should stay true for every 1 ≤ i ≤ n, but the product of all array elements should be minimum possible.

If there are multiple answers, print any of them.

Examples

input

5 3 1

5 4 3 5 2

output

5 4 3 5 -1

input

5 3 1

5 4 3 5 5

output

5 4 0 5 5

input

5 3 1

5 4 4 5 5

output

5 1 4 5 5

input

3 2 7

5 4 2

output

5 11 -5

【题目链接】:http://codeforces.com/contest/721/problem/D

【题解】



如果负数的个数为偶数个.

则需要把某一个数的符号变一下.让负数的个数变成奇数个.

(负数肯定比正数大!);

显然。我们让那个绝对值最小的数变号是最好的.

之后如果还有剩余的操作次数

就尽量让所有的数都”平均一点”;

这样最后连乘的结果最大.(是负数所以结果反而更小);

方法就是让绝对值最小的数的绝对值变大.

(每次都操作绝对值最小的数,让它的绝对值变大);

(绝对值最小的数可以用一个set维护出来);

那个重载<不包括==,所以如果想等就要随便想一个东西写上去.

(如果想到就直接返回true这样写最好)

不然会有东西莫名其妙地消失。



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%I64d",&x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int MAXN = 2e5+10;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0); LL a[MAXN]; struct node
{
int x,sign;
friend bool operator < (node aa,node bb)
{
if (abs(a[aa.x]) != abs(a[bb.x]))
return abs(a[aa.x]) < abs(a[bb.x]);
else
return true;
} }; int n,k,fu=0;
LL x;
set <node> dic; int main()
{
//freopen("F:\\rush.txt","r",stdin);
rei(n);rei(k);rel(x);
rep1(i,1,n)
{
rel(a[i]);
node temp;
if (a[i] < 0)
temp.sign = -1,fu++;
else
temp.sign = 1;
temp.x = i;
dic.insert(temp);
}
if (!(fu&1))
{
while (k)
{
k--;
int po = dic.begin()->x;
int s = dic.begin()->sign;
dic.erase(dic.begin());
node temp1;
LL temp = abs(a[po]);
if (temp < x)
{
s*=-1;
temp-=x;
a[po] = abs(temp)*s;
temp1.sign = s;temp1.x = po;
dic.insert(temp1);
break;
}
else
{
temp-=x;
a[po] = temp*s;
temp1.sign = s;temp1.x = po;
dic.insert(temp1);
}
}
}
while (k)
{
k--;
int po = dic.begin()->x;
int s = dic.begin()->sign;
dic.erase(dic.begin());
node temp1;
LL temp = abs(a[po]);
temp += x;
temp*=s;
a[po] = temp;
temp1.sign = s;
temp1.x = po;
dic.insert(temp1);
}
rep1(i,1,n)
{
printf("%I64d",a[i]);
if (i==n)
puts("");
else
putchar(' ');
}
return 0;
}

【24.17%】【codeforces 721D】Maxim and Array的更多相关文章

  1. CodeForces - 721D Maxim and Array (贪心)

    Recently Maxim has found an array of n integers, needed by no one. He immediately come up with idea ...

  2. JAVA 基础编程练习题17 【程序 17 猴子吃桃问题】

    17 [程序 17 猴子吃桃问题] 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又 将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一 ...

  3. 【 BowWow and the Timetable CodeForces - 1204A 】【思维】

    题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...

  4. 【24.67%】【codeforces 551C】 GukiZ hates Boxes

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  5. 【24.34%】【codeforces 560D】Equivalent Strings

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  6. 【40.17%】【codeforces 569B】Inventory

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. 【17.07%】【codeforces 583D】Once Again...

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  8. 【codeforces】【比赛题解】#855 Codefest 17

    神秘比赛,以<哈利波特>为主题……有点难. C题我熬夜切终于是写出来了,可惜比赛结束了,气啊. 比赛链接:点我. [A]汤姆·里德尔的日记 题意: 哈利波特正在摧毁神秘人的分灵体(魂器). ...

  9. 【77.78%】【codeforces 625C】K-special Tables

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

随机推荐

  1. 洛谷 P1358 扑克牌

    P1358 扑克牌 题目描述 组合数学是数学的重要组成部分,是一门研究离散对象的科学,它主要研究满足一定条件的组态(也称组合模型)的存在.计数以及构造等方面的问题.组合数学的主要内容有组合计数.组合设 ...

  2. 解决配置Ubuntu中vnc远程显示灰屏

    解决配置Ubuntu中vnc远程显示灰屏a. 缺失图形化工具b.  ~/.vnc/xstartup 权限不对1. Ubuntu 16.04 安装 VNC 及 Mate 桌面环境https://www. ...

  3. Android学习笔记进阶九之Matrix对称变换

    网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可. Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y= -x对称等等. 1 关于Y轴对称 // 获取资源文件的引用res ...

  4. spring的BeanWrapper类的原理和使用方法

    转自:http://blog.sina.com.cn/s/blog_79ae79b30100t4hh.html 如果动态设置一个对象属性,可以借助Java的Reflection机制完成: Class ...

  5. ubuntu-系统密匙

    1.安装虚拟机xp,需要密匙,网上搜了一个,验证能用 MRX3F-47B9T-2487J-KWKMF-RPWBY 2.安装vm也需要密匙,如下可用 HC6JC-FPJ4M-RZM61-48852-2A ...

  6. js进阶 14-9 ajax事件有哪些

    js进阶 14-9 ajax事件有哪些 一.总结 一句话总结:ajax开始时事件.发送时事件,请求完成时事件,请求成功时事件,请求结束时事件,请求错误时事件事件. 1.ajax事件的监听对象是谁? 都 ...

  7. 一个简单http请求的jmeter压测实战流程

    1.新建线程组 2.创建http请求 注意:接口路径中的参数值要写变量 3.创建txt文件,存多个参数值 4.创建csv文件,在csv中上传txt文件 5.variable name填写txt中参数值 ...

  8. 《TCP/IP具体解释卷2:实现》笔记--协议控制块

    协议层使用协议控制块(PCB)存放各UDP和TCP插口所要求的多个信息片.Internet协议维护Internet协议控制块 (internet protocol control block)和TCP ...

  9. Android Material风格的应用(一)--AppBar TabLayout

    打造Material风格的Android应用 Android Material风格的应用(一)--AppBar TabLayoutAndroid Material风格的应用(二)--RecyclerV ...

  10. 洛谷——P1011 车站

    https://www.luogu.org/problem/show?pid=1011#sub 题目描述 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车, ...