AtCoder Beginner Contest 149 E問題 - Handshake

Source

AtCoder Beginner Contest 149
問題文

問題概要

省略

解法

省略

cLayversion 20200119-1)のコード

C++に変換後のコードはこちら

int N; ll M;
int A[1d5];
ll sm[1d5+1];
{
  int i, j, x;
  ll ok, res = 0;
  rd(N,M,A(N));
  sortA(N,A);

  rep(i,N) sm[i+1] = sm[i] + A[i];

  x = bsearch_max[int,x,0,2d5][
    ok = j = 0;
    rrep(i,N){
      while(j < N && A[i] + A[j] < x) j++;
      if(j==N) break;
      ok += N - j;
    }
  ](ok >= M);

  ok = j = 0;
  rrep(i,N){
    while(j < N && A[i] + A[j] < x) j++;
    if(j==N) break;
    ok += N - j;
    res += (ll) A[i] * (N-j);
    res += sm[N] - sm[j];
  }
  res -= (ok - M) * x;
  wt(res);
}

Current time: 2021年09月28日21時49分26秒
Last modified: 2020年01月19日05時11分58秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Beginner_Contest ABC149 ABC_E
トップページに戻る

Logged in as: unknown user (not login)

ログイン: