/* AC iに干渉できるのは j=0~iのみ 最大値の最小値とかは決め打ちが便利 AGC009Dに似てる */ #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll INF=1LL<<60; typedef pair P; typedef pair PP; const ll MOD=1e9+7; int main(){ ll N,K; cin>>N>>K; vector A(N+1); ll lb=INF; for(int i=1;i<=N;i++){ cin>>A[i]; lb=min(lb,A[i]); } ll ub=INF;//lbは必ず達成できる while(ub-lb>1){ ll mid=(ub+lb)/2;//mid以上にできるかどうか ll cnt=0; ll tot=0; for(int i=1;i<=N;i++){ ll t=max(mid-(tot+A[i]),0LL); if(t>0){ //(t+(i-1))/i回, 足さないといけない ll step=(t+(i-1))/i; tot+=step*i;//i~Nにたされる数 cnt+=step; } } //K回以下でmidに達成できない if(K