1.题目描述:点击打开链接
2.解题思路:排序后从大到小选取,当take>sum-take时候停止。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; #define me(s) memset(s,0,sizeof(s)) typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; typedef pair <int, int> P; const int N=100+10; int a[N]; int main() { int n; while(~scanf("%d",&n)) { int sum=0; for(int i=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; } sort(a,a+n); int cnt=0,take=0; for(int i=n-1;i>=0;i--) { take+=a[i]; cnt++; if(take>sum-take)break; } printf("%d\n",cnt); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-23 20:40:59