输入
10
1 2 3 4 5 6 7 8 9 44
46
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[1000001];
void inline r(ll &x)
{
x=0;
char c=getchar();
while(c<'0'||c>'9')
c=getchar();
while(c<='9'&&c>='0')
{
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
}
int main()
{
ll n,ans=0,w;
r(n);
for(int i=1;i<=n;i++)
r(a[i]);
r(w);
sort(a+1,a+n+1);
w=min(w,a[n]);
for(int i=1;i<=n-1;i++)
if(ans<=w)
ans+=a[i];
else
{
cout<<i-2<<endl;
return 0;
}
cout<<n-1<<endl;
}
上面AC程序输出:
9
正确答案应为8
错因是最后没特判,应改为
if(ans<=w)
cout<<n-2<<endl;
else
cout<<n-1<<endl;