省略
省略
C++に変換後のコードはこちら
int N, M;
int A[20], B[20]; ll As, Bs;
ll valid[600000]; int vs;
{
int i, j, k;
ll s;
int res = 0;
double o;
rd(N,M,A(N),B(M));
rep(i,N) As += A[i];
rep(i,M) Bs += B[i];
rep(i,(1<<M)-1){
s = 0;
rep(j,M) if(i&1<<j) s += B[j];
if(s > Bs - s) valid[vs++] = s;
}
sort(valid, valid+vs);
rep(i,(1<<N)-1){
s = 0;
rep(j,N) if(i&1<<j) s += A[j];
if(s <= As - s) continue;
j = bsearch_min[int,k,0,vs](As - s > Bs - valid[k]);
k = bsearch_max[int,k,-1,vs-1](valid[k] < s);
res >?= k - j + 1;
}
o = (double)res / vs;
wt(o);
}
Current time: 2024年04月20日16時16分06秒
Last modified: 2019年09月04日00時12分53秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る
Logged in as: unknown user (not login)