Sagheer and Nubian Market CodeForces - 812C (二分+貪心)

long long相關的運算必須全部用log long!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

AC代碼:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=1e6+5;
typedef long long ll;
ll n,s,a[maxn],b[maxn];
int check(int mid) {
	memset(b,0,sizeof(b));
	for(ll i=1; i<=n; i++)b[i]=a[i]+i*mid;//注意ll運算中所有數都必須是ll,i也一樣(否者第11個樣例會WA) 
	sort(b+1,b+1+n);
	ll sum=0;
	for(int i=1; i<=mid; i++)sum+=b[i];
	if(sum>s)return 0;
	else return sum;
}
int main() {
	cin>>n>>s;
	for(int i=1; i<=n; i++)cin>>a[i];
	ll l=0,r=n,ans=0;
	while(l<r) {
		ll mid=l+(r-l+1)/2;
		if(check(mid)) {
			l=mid;
			ans=check(mid);
		} else r=mid-1;
	}
	cout<<l<<" "<<ans<<endl;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章