沧海一声喵 2018-02-01 06:53:04
点我顶贴
收藏
删除
先从小到大排序,再从头尾向中间靠拢
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int i,j,n,w,a[30001],num=0;
scanf("%d%d",&w,&n);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
sort(a+1,a+n+1);
i=1;j=n;
while(i<j){
if(a[i]+a[j]<=w){
i++;j--;}
else j--;
num++;}
if(i==j) num++;
printf("%d",num);
return 0;}