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;
}