记录编号 |
279010 |
评测结果 |
AAAAAAAAAA |
题目名称 |
砍树 |
最终得分 |
100 |
用户昵称 |
nsnsjsjjs |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.333 s |
提交时间 |
2016-07-08 17:56:29 |
内存使用 |
2.05 MiB |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
void Read();
int Readd();
void Work();
int Tree[1000001];
int N, M, Ans;
int hhd() {
Read();
sort(Tree+1, Tree+N+1);
Work();
printf("%d", Ans);
return 0;
}
int hh=hhd();
int main() {
return 0;
}
void Read() {
freopen("eko.in", "r", stdin);
freopen("eko.out", "w", stdout);
memset(Tree, 0, sizeof(Tree));
scanf("%d%d", &N, &M);
for(int i=1; i<=N; i++)
Tree[i] = Readd();
return;
}
inline int Readd() {
int x=0;
bool flag=true;
char c=getchar();
while(c>'9' || c<'0')
c = getchar();
while(c>='0' && c<='9')
x = (x<<1)+(x<<3)+c-'0', c = getchar();
return x;
}
void Work() {
int sum=0;
Ans = Tree[N];
for(int i=N-1; i>=1; i--)
if(Ans > Tree[i])
if(sum+(Ans-Tree[i])*(N-i) < M) {
sum += (Ans-Tree[i])*(N-i);
Ans = Tree[i];
} else {
int m=sum+(Ans-Tree[i])*(N-i)-M;
Ans = Tree[i]+m/(N-i);
return;
}
return;
}