fork download
  1. 値でソートしたのを a[0]..a[n-1] とします.
  2. 差が d 以下で作れるペアの最大数を求めたいです.
  3. これがわかると, d で二分探索し, 作れるペアが P 以上な最小の d を求めればよいです.
  4.  
  5. a[1] - a[0] が d 以下なら, これをペアにしてよいです, なぜなら:
  6. 1 < i < j な i, j を持ってきて a[0] と a[i], a[1] と a[j] をペアにするなら,
  7. a[0] と a[1], a[i] と a[j] もペアに出来て, これでもペアの個数は変わらない.
  8.  
  9. 1 < i な i を持ってきて, a[0] と a[i] をペアにしたり, a[1] と a[i] をペアにするなら,
  10. a[0] と a[1] をペアにしてもペアの個数が変わらない.
  11.  
  12. なので, a[1] - a[0] <= d なら, 1 + (a[2] 以降の解) が求める最大数です.
  13.  
  14. 一方, a[1] - a[0] > d なら, a[0] は誰ともペアになれないので, (a[1] 以降の解) が求める最大数です.
  15.  
  16.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty