hack
查看原帖
hack
158400
晴空一鹤楼主2022/7/24 18:49

输入

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;
2022/7/24 18:49
加载中...