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. [Angular & Unit Testing] TestBed.get vs Injector

    Both what "TestBed.get" & "injector" trying to do is get service for the tes ...

  2. IO流学习笔记

    1.File类 文件和目录路径名的抽象表示形式. 4种构造方法 File(File parent, String child) File(File parent, String child) File ...

  3. Swagger文档转Word

    Swagger文档转Word 文档   GitHub 地址:https://github.com/JMCuixy/SwaggerToWord/tree/developer 原创作品,转载请注明出处:h ...

  4. Zabbix监控,Mysql,Nginx,PHP-FTPM

    一 Zabbix监控Mysql 监控Mysql,Zabbix提供了一个监控模板,所有可以直接使用.或者使用Percona提供的监控模板. 1. 使用自带监控模板 1.1.1 编写监控模板 #!/bin ...

  5. tab标签页(选项卡)插件

    <body style="margin: 50px;"> <ul id="nav" class="nav nav-tabs" ...

  6. 支付宝支付Java后台总结

    这个支付的流程是前端H5(APP等)需要支付时调用后台的接口拿到我们加密的签名去调起支付宝的支付界面(支付宝APP)进行支付操作,并且前端在支付成功后,支付宝后台会回调一个我们在签名时写入的一个接口地 ...

  7. canvas.toDataURL() gives “Security Error” in IE 11

    http://stackoverflow.com/questions/30101143/canvas-todataurl-gives-security-error-in-ie-11

  8. python 命令行參数解析

    本文是从我还有一个博客转载过来的,欢迎大家点击进去看一下,帮我添加点人气^_^ ImPyy 选择模块 依据python參考手冊的提示,optparse 已经废弃,应使用 argparse 教程 概念 ...

  9. android.mk-编译文件学习(转载)

    工作了那么久,都是使用大神们写的脚本机械的编译,对于android.mk根本没去了解过.今天趁着这个机会,在网上搜索了下.虽然依然不是很名白,留做记录,以后真用到了,再深入研究 转载自 http:// ...

  10. 原生js大总结七

    061.如何获取父级节点.上一个子级节点.下一个子级节点    nextElementSibling  后一个兄弟元素  (如果没有是null)    previousElementSibling   ...