您的位置:首页 > 其它

Codeforces VK Cup Finals #424 Div.1 C. Bamboo Partition(数论)

2017-08-26 23:30 387 查看

  题目要求符合以下条件的最大的d

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=110,inf=1e9;
ll n,k,ans,r;
ll a[maxn];
void read(ll &k)
{
int f=1;k=0;char c=getchar();
while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
while(c<='9'&&c>='0')k=k*10+c-'0',c=getchar();
k*=f;
}
int main()
{
read(n);read(k);
for(int i=1;i<=n;i++)read(a[i]),k+=a[i];
for(ll d=1;d<=1000000000;d=r+1)
{
r=1ll*10000*inf;
for(int i=1;i<=n;i++)if(a[i]>d)r=min(r,(a[i]-1)/((a[i]-1)/d));
ll tot=0;for(int i=1;i<=n;i++)tot+=(a[i]-1)/d+1;
ll mxd=k/tot;if(d<=mxd&&mxd<=r)ans=max(ans,mxd);
}
printf("%lld\n",ans);
return 0;
}
View Code  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐