Pagini recente » Cod sursa (job #961686) | Cod sursa (job #791442) | Cod sursa (job #617644) | Cod sursa (job #493130) | Cod sursa (job #406634)
Cod sursa(job #406634)
#include<fstream>
using namespace std;
const char iname[]="caramizi.in";
const char oname[]="caramizi.out";
const int maxc=1000005;
const int maxn=200005;
ifstream f(iname);
ofstream g(oname);
long long R[maxc],C[maxn],i,j,n,m,k,cmax,many[maxc],s;
int main()
{
f>>n>>m;
for(i=1;i<=n;++i)
f>>j,++many[j],cmax=max(cmax,j),s+=j;
for(i=1;i<=cmax;++i)
R[i]=R[i-1]+i*many[i];
for(i=cmax;i;--i)
many[i]+=many[i+1];
for(i=1;i<=cmax;++i)
R[i]=max(R[i-1],((R[i]+many[i+1]*i)/i)*i);
C[s/cmax+1]=R[cmax];
for(i=s/cmax;i;--i)
C[i]=max(C[i+1],(s/i)*i);
C[0]=C[1];
for(i=1;i<=m;++i)
{
f>>j;
if(j<=cmax)
g<<R[j]<<"\n";
else
g<<max((s/j)*j,C[s/j+1])<<"\n";
}
f.close();
g.close();
return 0;
}