http://codeforces.com/problemset/problem/38/C
给出一个下限以及很多个长度,小于下限的长度可以不用看了,只要从下限到长度最大值遍历,
求每个长度除以遍历到的当前长度的整数部分的和的最大值即可
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,l;
while(cin>>n>>l){
int ans=-1;
int a[111];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
int id=-1;
for(int i=0;i<n;i++)
{
if(a[i]>=l){
id=i;
break;
}
}
if(id==-1)
cout<<"0"<<endl;
else{
int zs=0;
for(int i=l;i<=a[n-1];i++)
{
zs=0;
for(int j=id;j<n;j++)
{
zs+=a[j]/i;
}
ans=max(ans,zs*i);
}
cout<<ans<<endl;
}
}
return 0;
}

被折叠的 条评论
为什么被折叠?



