比赛 20160707 评测结果 AAAATTTTTT
题目名称 砍树 最终得分 40
用户昵称 123 运行时间 6.036 s
代码语言 C++ 内存使用 7.82 MiB
提交时间 2016-07-07 15:37:21
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int main(){
	freopen ("eko.in","r",stdin);
	freopen ("eko.out","w",stdout);
	long long a,b,c,d,e[1000009]={0},f,g,h,i,j,k,l,m;
	cin>>a>>b;
	for (d=1;d<=a;d++)
	{
		cin>>e[d];
	}
	sort(e,e+a+1);
	g=0;
	h=a;
	i=2;
	m=a-1;
	g=g+e[a]-e[a-1];
	e[a]=e[a]-g;
	for (f=1;;f++)
	{
		if(g<b)
		{
			for (l=m;l>=1;l--)
			{
				if(e[l]<=e[l-1])
				{
					i++;
					m=m-1;
				}
				else
				break;
			}
			k=a;
			for (j=1;j<=i;j++)
			{
				e[k]=e[k]-1;
				g=g+1;
				k--;
			}
		}
		else
		break;
	}
	cout<<e[a];
	return 0;
}