100 9 90 20 20 30 50 60 70 80 90
6
#include <cstdio> #include <iostream> #include <cmath> #include <string> #include <cstring> #include <algorithm> #include <queue> #include <vector> #include <map> using namespace std; #define ll long long const int maxn = 5100; int n, w, p[30000+8], l, r, id[30000+8], sign[30000+8], num; int main() { scanf("%d", &w); scanf("%d", &n); num = 0; memset(sign, 0, sizeof(sign)); for(int i = 0; i<n; i++) scanf("%d", &p[i]); sort(p, p+n, greater<int>()); int d = n-1; for(int i = 0; i<n; i++)id[i] = i; for(int i = 0; i<n; i++) { if(p[i]+p[d] <= w && !sign[i]) { id[i] = d; sign[d] = sign[i] = 1; d--; num++; } else if(p[i]+p[d] > w && !sign[i]) { sign[i] = 1; num++; } } printf("%d\n", num); return 0; }
原文:https://www.cnblogs.com/RootVount/p/11248639.html