CodeForces - 721D Maxim and Array (贪心)
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 koperations 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
- 5 3 1
5 4 3 5 2
- 5 4 3 5 -1
- #include<iostream>
- #include<algorithm>
- #include<vector>
- #include<stack>
- #include<queue>
- #include<map>
- #include<set>
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<ctime>
- #define fuck(x) cerr<<#x<<" = "<<x<<endl;
- #define debug(a, x) cerr<<#a<<"["<<x<<"] = "<<a[x]<<endl;
- #define ls (t<<1)
- #define rs ((t<<1)|1)
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- const int loveisblue = ;
- const int maxn = ;
- const int maxm = ;
- const int inf = 0x3f3f3f3f;
- const ll Inf = ;
- const int mod = ;
- const double eps = 1e-;
- const double pi = acos(-);
- int n,k;
- struct node{
- ll num,absnum;
- int id;
- bool operator<(const node &p)const{
- return p.absnum<absnum;
- }
- }a[maxn];
- priority_queue<node>q;
- ll ans[maxn];
- int main() {
- // ios::sync_with_stdio(false);
- // freopen("in.txt", "r", stdin);
- int n,k;
- ll x;
- scanf("%d%d%lld",&n,&k,&x);
- for(int i=;i<=n;i++){
- ll num;
- scanf("%lld",&num);
- a[i]=node{num,abs(num),i};
- }
- sort(a+,a++n);
- int fu = ;
- for(int i=;i<=n;i++){
- if(a[i].num<){
- fu++;
- }
- }
- if(fu%==){
- if(x*k>=a[n].absnum){
- int p = min(1ll*k,a[n].absnum/x+);
- k-=p;
- if(a[n].num<){
- a[n].num+=p*x;
- a[n].absnum = abs(a[n].num);
- }else{
- a[n].num-=p*x;
- a[n].absnum = abs(a[n].num);
- }
- }
- }
- fu = ;
- for(int i=;i<=n;i++){
- if(a[i].num<){
- fu++;
- }
- }
- for(int i=;i<=n;i++){
- q.push(a[i]);
- }
- while (k--){
- node exa = q.top();
- q.pop();
- if(fu&){
- if(exa.num<){
- exa.num-=x;
- exa.absnum+=x;
- }else{
- exa.num+=x;
- exa.absnum+=x;
- }
- }else{
- if(exa.num<){
- exa.num+=x;
- exa.absnum-=x;
- }else{
- exa.num-=x;
- exa.absnum-=x;
- }
- }
- q.push(exa);
- }
- while (!q.empty()){
- node exa = q.top();
- q.pop();
- ans[exa.id]=exa.num;
- }
- for(int i=;i<=n;i++){
- printf("%lld ",ans[i]);
- }
- return ;
- }
CodeForces - 721D Maxim and Array (贪心)的更多相关文章
- CodeForces 721D Maxim and Array
贪心,优先队列. 先看一下输入的数组乘积是正的还是负的. ①如果是负的,也就是接下来的操作肯定是让正的加大,负的减小.每次寻找一个绝对值最小的数操作就可以了. ②如果是正的,也是考虑绝对值,先操作绝对 ...
- Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
D. Maxim and Array 题目连接: http://codeforces.com/contest/721/problem/D Description Recently Maxim has ...
- Codeforces Round #374 (Div. 2) D. Maxim and Array —— 贪心
题目链接:http://codeforces.com/problemset/problem/721/D D. Maxim and Array time limit per test 2 seconds ...
- Codeforces F. Maxim and Array(构造贪心)
题目描述: Maxim and Array time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Codeforces Round #374 (Div. 2) D. Maxim and Array 线段树+贪心
D. Maxim and Array time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces 442C Artem and Array(stack+贪婪)
题目连接:Codeforces 442C Artem and Array 题目大意:给出一个数组,每次删除一个数.删除一个数的得分为两边数的最小值,假设左右有一边不存在则算作0分. 问最大得分是多少. ...
- Codeforces Round #504 D. Array Restoration
Codeforces Round #504 D. Array Restoration 题目描述:有一个长度为\(n\)的序列\(a\),有\(q\)次操作,第\(i\)次选择一个区间,将区间里的数全部 ...
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
- [Codeforces 1214A]Optimal Currency Exchange(贪心)
[Codeforces 1214A]Optimal Currency Exchange(贪心) 题面 题面较长,略 分析 这个A题稍微有点思维难度,比赛的时候被孙了一下 贪心的思路是,我们换面值越小的 ...
随机推荐
- hdu5437 优先队列 长春网赛
优先队列做,然后遍历人数. #include <queue> #include <stdio.h> #include <string.h> #define maxn ...
- MyBatis的基本用法
MyBatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使 ...
- 利用IDEA构建springboot应用-Controller的使用
Controller的使用 @Controller 处理http请求 @RestController Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Contr ...
- 捕捉WPF应用程序中XAML代码解析异常
原文:捕捉WPF应用程序中XAML代码解析异常 由于WPF应用程序中XAML代码在很多时候是运行时加载处理的.比如DynamicResource,但是在编译或者运行的过程中,编写的XAML代码很可能有 ...
- 2019-8-31-dotnet-通过-WMI-获取系统信息
title author date CreateTime categories dotnet 通过 WMI 获取系统信息 lindexi 2019-08-31 16:55:59 +0800 2019- ...
- 谷歌BERT预训练源码解析(二):模型构建
目录前言源码解析模型配置参数BertModelword embeddingembedding_postprocessorTransformerself_attention模型应用前言BERT的模型主要 ...
- PPP验证对比
- Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例
从某种意义上说,服务提供者有点类似HTTP控制器,HTTP控制器用于为相关路由注册提供统一管理,而服务提供者用于为相关服务容器提供统一绑定场所,此外服务提供者还可以做一些初始化启动操作.Laravel ...
- [转]来自后端的逆袭 blazor简介 全栈的福音
背景 什么是SPA 什么是MPA MPA (Multi-page Application) 多页面应用指的就是最传统的 HTML 网页设计,早期的网站都是这样的设计,所之称为「网页设计」.使用 MPA ...
- xml 校验
package sax.parsing; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoun ...