結果
| 問題 | No.507 ゲーム大会(チーム決め) | 
| コンテスト | |
| ユーザー |  t8m8⛄️ | 
| 提出日時 | 2017-04-28 02:08:09 | 
| 言語 | Nim (2.2.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 68 ms / 3,000 ms | 
| コード長 | 737 bytes | 
| コンパイル時間 | 3,325 ms | 
| コンパイル使用メモリ | 66,268 KB | 
| 実行使用メモリ | 6,912 KB | 
| 最終ジャッジ日時 | 2024-06-30 01:10:06 | 
| 合計ジャッジ時間 | 4,941 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 19 | 
ソースコード
import strutils, sequtils, algorithm
proc f(a: seq[int]; x, mid, n, m: int): bool =
  var
    val = x + a[mid]
    b = concat(a[0..mid-1], a[mid+1..n-2])
    (l, r) = (0, n-3)
    cnt = 0
  
  while l < r:
    var p = b[l] + b[r]
    if p > val:
      cnt.inc
      l.inc
      r.dec
    else:
      l.inc
    
  result = cnt < m
when isMainModule:
  var
    input = stdin.readline.split.map(parseint)
    (n, m) = (input[0], input[1])
    a = newSeq[int]()
    x = stdin.readline.parseint
  for i in 0..n-2:
    a.add stdin.readline.parseint
  a.sort(system.cmp)
  var (l, r) = (-1, n-2)
  while r - l > 1:
    var mid = (l + r) div 2
    if f(a, x, mid, n, m): r = mid
    else: l = mid
  echo if f(a, x, r, n, m): $a[r] else: "-1"
            
            
            
        