2 条题解

  • 1

    诏曰

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n,w,i,ans=0;
    	cin>>n>>w;
    	int a[n]={};
    	for(i=0;i<n;i++)
    	cin>>a[i];
    	sort(a,a+n);//从小到大排序
    	for(i=0;i<n;i++){
    		if(a[i]<=w) ans++;
    		else break;
    	}//排完序列中可单个出来的石子
    	int left=0,right=n-1;
    	while(right>left){//要学会想象,自然而明
    		if(a[left]+a[right]<=w){
    			ans--;
    		    left++;
    		    right--;
    		}
    		else right--;
    		if(a[left]>=w) break;
    	}
    	cout<<ans;
        return 0;
    }
    

    信息

    ID
    800
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    86
    已通过
    4
    上传者