A .A Prize No One Can Win
题意:给定N,S,你要从N个数中选最多是数,使得任意两个之和不大于S。
思路:排序,然后贪心的选即可。
#include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=2000010; ll a[maxn]; int main() { int N,ans; ll M; scanf("%d%lld",&N,&M); rep(i,1,N) scanf("%lld",&a[i]); sort(a+1,a+N+1); ans=1; rep(i,2,N){ if(a[i]+a[i-1]<=M) ans=i; } printf("%d\n",ans); return 0; }