请求hack数据
查看原帖
请求hack数据
1383350
dengruijie2楼主2024/8/23 16:41

这道题目的代码

#include<bits/stdc++.h>
#define int long long
using namespace std;

int n, w, a[1000005], s[1000005];

signed main(){
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> a[i];
	}
	cin >> w;
	sort(a + 1, a + n + 1);
	int l = 0, r = n + 1;
	a[0] = -1e9;
	a[n + 1] = 1e9;
	while(l + 1 < r){
		int mid = (l + r) / 2; 
		if (a[mid] <= w){
			l = mid;
		}
		else{
			r = mid;
		}
	}
	w = a[l];
	for (int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i];
	l = 0, r = n + 1;
	s[0] = -1e9;
	a[n + 1] = 1e9;
	while(l + 1 < r){
		int mid = (l + r) / 2;
		if (s[mid] > w){
			r = mid;
		}
		else{
			l = mid;
		}
	}
	cout << l;
	return 0;
} 

但是,这个代码也可以ACAC

#include<bits/stdc++.h>
#define int long long
using namespace std;

int n, w, a[1000005], s[1000005];

signed main(){
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> a[i];
	}
	cin >> w;
	sort(a + 1, a + n + 1);
	int l = 0, r = n + 1;
	a[0] = -1e9;
	a[n + 1] = 1e9;
	while(l + 1 < r){
		int mid = (l + r) / 2; 
		if (a[mid] < w){
			l = mid;
		}
		else{
			r = mid;
		}
	}
	w = a[l];
	for (int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i];
	l = 0, r = n + 1;
	s[0] = -1e9;
	a[n + 1] = 1e9;
	while(l + 1 < r){
		int mid = (l + r) / 2;
		if (s[mid] > w){
			r = mid;
		}
		else{
			l = mid;
		}
	}
	cout << l;
	return 0;
} 

教练说题目里面好像数据里面没有哪个商品价格刚好等于ww,所以请求hackhack数据

2024/8/23 16:41
加载中...