Pagini recente » Cod sursa (job #1292109) | Cod sursa (job #1099166) | Cod sursa (job #709466) | Cod sursa (job #2337148) | Cod sursa (job #1201761)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("caramizi.in"); ofstream g("caramizi.out");
long long n,m,i,s,c,cmax,X[1000005],Nr[1000005],R[1000005],D[1000005],H[200005];
int main()
{ f>>n>>m;
for(i=1;i<=n;++i) f>>c, ++X[c], cmax=max(cmax,c), s+=c;
for(i=1;i<=cmax;++i) R[i]=R[i-1]+i*X[i];
for(i=cmax;i;--i) Nr[i]=Nr[i+1]+X[i];
for(i=1;i<=cmax;++i) D[i]=max(D[i-1],R[i]/i*i+Nr[i+1]*i);
H[s/cmax+1]=D[cmax];
for(i=s/cmax;i;--i) H[i]=max(H[i+1],s/i*i);
for(i=1;i<=m;++i)
{ f>>c;
if(c<=cmax) g<<D[c]<<"\n"; else g<<max(s/c*c,H[s/c+1])<<"\n";
}
g.close(); return 0;
}