求调 E
  • 板块学术版
  • 楼主Night_sea_64
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/1/18 21:41
  • 上次更新2025/1/19 09:30:42
查看原帖
求调 E
554145
Night_sea_64楼主2025/1/18 21:41

WA*2。

这回又只过 4 题,小丑了。

#include<iostream>
#include<queue>
#define int long long
using namespace std;
int n,m,a[200010];
int chk(int x)
{
  int sum=0,cnt=0;
  for(int i=1;i<=n;i++)
  {
    int k=x/a[i];
    if(k%2==0)k--;
    k=(k+1)/2;
    if(k>1e9)return -1;
    if((__int128_t)k*k*a[i]>m-sum)return -1;
    sum+=k*k*a[i];
    cnt+=k;
  }
  return cnt;
}
signed main()
{
  cin>>n>>m;
  for(int i=1;i<=n;i++)cin>>a[i];
  int l=0,r=m,ans=0;
  while(l<=r)
  {
    int mid=(l+r)/2;
    int now=chk(mid);
    if(now>=0)l=mid+1,ans=now;
    else r=mid-1;
  }
  cout<<ans<<endl;
  return 0;
}
2025/1/18 21:41
加载中...