C. Maximum Median

time limit per test

2 seconds

memory limit per test

256 megabytes

You are given an array a of n integers, where n is odd. You can make the following operation with it:

  • Choose one of the elements of the array (for example ai) and increase it by 1 (that is, replace it with ai+1).

You want to make the median of the array the largest possible using at most k operations.

The median of the odd-sized array is the middle element after the array is sorted in non-decreasing order. For example, the median of the array 1,5,2,3,5 is 3.

Input

The first line contains two integers n and k (1≤n≤2⋅105, n is odd, 1≤k≤109) --- the number of elements in the array and the largest number of operations you can make.

The second line contains n integers a1,a2,...,an (1≤ai≤109).

Output

Print a single integer --- the maximum possible median after the operations.

Examples

Input

Copy

复制代码
3 2
1 3 5

Output

Copy

复制代码
5

Input

Copy

复制代码
5 5
1 2 1 1 1

Output

Copy

复制代码
3

Input

Copy

复制代码
7 7
4 1 2 4 3 4 4

Output

Copy

复制代码
5

Note

In the first example, you can increase the second element twice. Than array will be 1,5,5 and it's median is 5.

In the second example, it is optimal to increase the second number and than increase third and fifth. This way the answer is 3.

In the third example, you can make four operations: increase first, fourth, sixth, seventh element. This way the array will be 5,1,2,5,3,5,5 and the median will be 5.

解题说明:此题是一道数学题,首先对数列进行从小到大排序,为了让中位数变大,让中位数变成和后面的数一样大,于是让该中位数在加完k后和后面的X个数字相同即可。

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int n, k, m, i;
int main()
{
	cin >> n >> k;
	int a[200004];
	m = n / 2;
	for (i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	sort(a, a + n);
	for (i = a[m]; k > 0; i++) 
	{
		while (i == a[m + 1])
		{
			m++;
		}
		k = k - (m - n / 2 + 1);
	}
	if (k == 0)
	{
		cout << i<<endl;
	}
	else
	{
		cout << i - 1<<endl;
	}
	return 0;
}
相关推荐
晓蛋17 小时前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特17 小时前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!17 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊17 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿18 小时前
重载、重写(覆盖)、重定义区别
c语言
伞伞悦读18 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
猎头南楼18 小时前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
phltxy18 小时前
C 语言指针:从内存地址到灵活的数据访问
c语言
C语言小火车19 小时前
C/C++ 为什么需要编译器?
开发语言·c++
phltxy19 小时前
C 语言中的数据存储:从类型到二进制位
c语言