結果

問題 No.1211 円環はお断り
ユーザー Rho
提出日時 2020-08-24 22:26:44
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 659 ms / 2,000 ms
コード長 910 bytes
コンパイル時間 1,759 ms
コンパイル使用メモリ 168,276 KB
実行使用メモリ 37,124 KB
最終ジャッジ日時 2024-11-23 16:09:33
合計ジャッジ時間 11,212 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 41
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include "bits/stdc++.h"
#define rep(i,n)for(int i=0;i<(int)(n);i++)
using namespace std;
#define all(a) a.begin(),a.end()
typedef long long ll;
typedef pair<ll,ll>P;
#define vi vector<ll>
const ll inf=1ll<<61;
ll a[100006];
ll rwa[200005];
ll to[20][200005];
signed main(){
ll n,k;cin>>n>>k;
ll S=0;
rep(i,n){
cin>>a[i];
rwa[i+1]=rwa[i+n+1]=a[i];
S+=a[i];
}
rep(i,n+n)rwa[i+1]+=rwa[i];
ll lb=0,ub=(S/k)+1;
while(ub-lb>1){
//mi?
ll mi=(ub+lb)/2;
rep(i,n){
auto itr=lower_bound(rwa,rwa+n+n+1,rwa[i]+mi);
to[0][i]=itr-rwa;
to[0][i+n]=to[0][i]+n;
if(to[0][i+n]>=n+n)to[0][i+n]=n+n;
}
to[0][n+n]=n+n;
rep(i,19){
rep(j,n+n+1){
to[i+1][j]=to[i][to[i][j]];
}
}
int ok=0;
rep(i,n){
int now=i;
rep(j,19){
if(k&(1<<j))now=to[j][now];
}
if(i<now&&now<=i+n)ok++;
}
if(ok)lb=mi;
else ub=mi;
}
cout<<lb<<endl;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0