Anya and Kirill are doing a physics laboratory work. In one of the tasks they have to measure some value n times, and then compute the average value to lower the error.

Kirill has already made his measurements, and has got the following integer values: x1, x2, ..., xn. It is important that the values are close to each other, namely, the difference between the maximum value and the minimum value is at most 2.

Anya does not want to make the measurements, however, she can't just copy the values from Kirill's work, because the error of each measurement is a random value, and this coincidence will be noted by the teacher. Anya wants to write such integer values y1, y2, ..., ynin her work, that the following conditions are met:

  • the average value of x1, x2, ..., xn is equal to the average value of y1, y2, ..., yn;
  • all Anya's measurements are in the same bounds as all Kirill's measurements, that is, the maximum value among Anya's values is not greater than the maximum value among Kirill's values, and the minimum value among Anya's values is not less than the minimum value among Kirill's values;
  • the number of equal measurements in Anya's work and Kirill's work is as small as possible among options with the previous conditions met. Formally, the teacher goes through all Anya's values one by one, if there is equal value in Kirill's work and it is not strike off yet, he strikes off this Anya's value and one of equal values in Kirill's work. The number of equal measurements is then the total number of strike off values in Anya's work.

Help Anya to write such a set of measurements that the conditions above are met.

Input

The first line contains a single integer n (1 ≤ n ≤ 100 000) — the numeber of measurements made by Kirill.

The second line contains a sequence of integers x1, x2, ..., xn ( - 100 000 ≤ xi ≤ 100 000) — the measurements made by Kirill. It is guaranteed that the difference between the maximum and minimum values among values x1, x2, ..., xn does not exceed 2.

Output

In the first line print the minimum possible number of equal measurements.

In the second line print n integers y1, y2, ..., yn — the values Anya should write. You can print the integers in arbitrary order. Keep in mind that the minimum value among Anya's values should be not less that the minimum among Kirill's values, and the maximum among Anya's values should be not greater than the maximum among Kirill's values.

If there are multiple answers, print any of them.

Examples
input
6
-1 1 1 0 0 -1
output
2
0 0 0 0 0 0
input
3
100 100 101
output
3
101 100 100
input
7
-10 -9 -10 -8 -10 -9 -9
output
5
-10 -10 -9 -9 -9 -9 -9 题意:给出a串,保证每个数字是整数且所有数间差值最大不超过2,输出b串使其:1.两串总和相等 2.b串数取值范围和a串数相同 3.两串相同数尽量少
找规律题,分类讨论
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define INF 0x3f3f3f3f
#define lowbit(x) (x&(-x))
#define eps 0.00000001
#define pn printf("\n")
using namespace std;
typedef long long ll; const int maxn = 1e5+;
int n, a[maxn];
int MIN = INF, MAX = -INF, tot = ;
int k = , fl = ;
vector <int> vi;
map <int,int> mp; int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d",a+i);
mp[a[i]] ++;
tot += a[i];
MIN = min(MIN, a[i]);
MAX = max(MAX, a[i]);
} if(MAX - MIN <= )
{
printf("%d\n", n);
for(int i=;i<n;i++)
{
if(i) printf(" ");
printf("%d", a[i]);
}pn;
}
else
{
if(!mp.count(MAX-))
{
int mt, res;
if(mp[MIN] < mp[MAX])
{
mt = mp[MIN];
res = MAX;
}
else
{
mt = mp[MAX];
res = MIN;
}
int mid = * mt, fl = ;
printf("%d\n" ,n - mid);
for(int i=;i<mid;i++)
{
if(!fl) fl = ;
else printf(" ");
printf("%d", MIN +);
}
for(int i=mid;i<n;i++)
{
if(!fl) fl = ;
else printf(" ");
printf("%d", res);
}
}
else // 1 2 2 2 2 3
{
if(min(mp[MIN],mp[MAX])* > mp[MIN+]/*)
{
int mt, res;
if(mp[MIN] < mp[MAX])
{
mt = mp[MIN];
res = MAX;
}
else
{
mt = mp[MAX];
res = MIN;
}
int mid = * mt + mp[MIN+], fl = ;
printf("%d\n" ,n - * mt);
for(int i=;i<mid;i++)
{
if(!fl) fl = ;
else printf(" ");
printf("%d", MIN +);
}
for(int i=mid;i<n;i++)
{
if(!fl) fl = ;
else printf(" ");
printf("%d", res);
} }
else
{
int mt = mp[MIN+]/;
int ans = (mp[MIN+]&) + mp[MIN] + mp[MAX];
printf("%d\n",ans);
int fl = , cn = mp[MIN] + mt, cx = mp[MAX] + mt;
if(mp[MIN+]&)
{
printf("%d",MIN + ); fl = ;
}
for(int i=;i<cn;i++)
{
if(!fl) fl = ;
else printf(" ");
printf("%d", MIN);
}
for(int i=;i<cx;i++)
{
if(!fl) fl = ;
else printf(" ");
printf("%d", MAX);
}
}
}
pn;
} }

Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)C. Laboratory Work的更多相关文章

  1. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)B. World Cup

    The last stage of Football World Cup is played using the play-off system. There are n teams left in ...

  2. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)

    A.B都是暴力搞一搞. A: #include<bits/stdc++.h> #define fi first #define se second #define mk make_pair ...

  3. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)D. Peculiar apple-tree

    In Arcady's garden there grows a peculiar apple-tree that fruits one time per year. Its peculiarity ...

  4. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)A. Friends Meeting

    Two friends are on the coordinate axis Ox in points with integer coordinates. One of them is in the ...

  5. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861C Did you mean...【字符串枚举,暴力】

    C. Did you mean... time limit per test:1 second memory limit per test:256 megabytes input:standard i ...

  6. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861B Which floor?【枚举,暴力】

    B. Which floor? time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  7. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861A k-rounding【暴力】

    A. k-rounding time limit per test:1 second memory limit per test:256 megabytes input:standard input ...

  8. Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round)

    A. Technogoblet of Fire 题意:n个人分别属于m个不同的学校 每个学校的最强者能够选中 黑客要使 k个他选中的可以稳被选 所以就为这k个人伪造学校 问最小需要伪造多少个 思路:记 ...

  9. Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)

    A. Search for Pretty Integers 题目链接:http://codeforces.com/contest/872/problem/A 题目意思:题目很简单,找到一个数,组成这个 ...

随机推荐

  1. asp.net--常用的数据库链接字符串

    本地连接 privatestring conn_string ="Data Source=localhost;Initial Catalog=SQLtest;Integrated Secur ...

  2. [bzoj1500][NOI2005]维修数列_非旋转Treap

    维修数列 bzoj-1500 NOI-2005 题目大意:给定n个数,m个操作,支持:在指定位置插入一段数:删除一个数:区间修改:区间翻转.查询:区间和:全局最大子序列. 注释:$1\le n_{ma ...

  3. sublime text3环境与工具搭建

    1,ctrl+shift+P ,打开包安装窗口如下: 2,选择 install Package,安装详解插件 1-安装 JsFormat插件,用于格式化js的插件,使用快捷键 Ctrl+Alt+F对J ...

  4. HDU 1912

    坑,直接把公路看成X轴来做,然后,排序扫描一下,你懂的. #include <iostream> #include <algorithm> #include <cstdi ...

  5. python使用pytest+pytest报告

    需要安装pytest和pytest-html pip3 install -U pytest pip3 install -U pytest-html

  6. POJ 3723 Tree(树链剖分)

    POJ 3237 Tree 题目链接 就多一个取负操作,所以线段树结点就把最大和最小值存下来,每次取负的时候,最大和最小值取负后.交换就可以 代码: #include <cstdio> # ...

  7. Online Object Tracking: A Benchmark 论文笔记

    Factors that affect the performance of a tracing algorithm 1 Illumination variation 2 Occlusion 3 Ba ...

  8. MySQL主从复制和读写分离

    我们知道应用对数据库的訪问通常情况下大部分都是读操作,写仅仅占非常少一部分.因此读写分离(read-write-splitting)能有效减少主库压力,从而解决站点发展过程中遇到的第一次数据库瓶颈. ...

  9. 原生JS通过勾股定理计算苹果菜单效果

    JS原生苹果菜单效果 知识点: 勾股定理 a²+b²=c² Event 是一个事件对象,当一个事件发生后,和当前事件发生相关的详细信息会被临时存储到一个指定的地方,也就是event对象,以方便我们在需 ...

  10. B - Spyke Talks

    Problem description Polycarpus is the director of a large corporation. There are n secretaries worki ...