题目36


        用数组代表每个人的能力
        一个比赛活动要求 参赛团队的最低能力值为N
        每个团队可以由一人或者两人组成
        且一个人只能参加一个团队
        计算出最多可以派出多少只符合要求的队伍

        输入描述
        5
        3 1 5 7 9
        8
        第一行代表总人数,范围  1~500000
        第二行数组代表每个人的能力
           数组大小范围 1~500000
           元素取值范围 1~500000
        第三行数值为团队要求的最低能力值
         1~500000

         输出描述
         3
         最多可以派出的团队数量

         示例一
         输入
         5
         3 1 5 7 9
         8

         输出
         3

         说明 3、5组成一队   1、7一队  9自己一队  输出3

         7
         3 1 5 7 9 2 6
         8

        3
        1 1 9
        8

<?php
$m=trim(fgets(STDIN));
$l=trim(fgets(STDIN));
$n=trim(fgets(STDIN));
solution($l,$n);

function solution($l,$n)
{
    $l=explode(' ',$l);
    $nb=[];
    foreach ($l as $k=>$v){
        if($v>=$n) $nb[]=$v;
    }
    sort($l);
    $count=count($nb);
    $l=array_splice($l,0,count($l)-$count);
    $i=0;$j=count($l)-1;
    while ($i<$j){
        if($l[$i]+$l[$j]>=$n){
            $count++;
            $i++;
            $j--;
        }else{
            $i++;
        }
    }
    echo $count;
}