Pagini recente » Cod sursa (job #1503829) | Cod sursa (job #2114748) | Cod sursa (job #2124007) | Cod sursa (job #2714706) | Cod sursa (job #1759379)
#include <cstdio>
#include <cctype>
#include <algorithm>
#define BUF_SIZE 1<<17
#define MAXN 200001
#define MAXC 1000000
int v[MAXN+1], h[MAXC+1];
long long s[MAXN+1], d[MAXC+1], u[MAXN+3];
int pos=BUF_SIZE;
char buf[BUF_SIZE];
FILE *fin;
inline char nextch(){
if(pos==BUF_SIZE) fread(buf, BUF_SIZE, 1, fin), pos=0;
return buf[pos++];
}
inline int read(){
int x=0;
char ch=nextch();
while(!isdigit(ch)) ch=nextch();
while(isdigit(ch)){
x=10*x+ch-'0';
ch=nextch();
}
return x;
}
inline long long max2(long long a, long long b){
if(a>b) return a;
else return b;
}
int main(){
int n, i, q, j, x;
long long ans;
FILE *fout;
fin=fopen("caramizi.in", "r");
fout=fopen("caramizi.out", "w");
n=read();
q=read();
for(i=1; i<=n; i++)
v[i]=read();
v[n+1]=MAXC;
std::sort(v+1, v+n+1);
for(i=1; i<=n; i++)
s[i]=s[i-1]+v[i];
for(i=1; i<=n+1; i++){
for(j=v[i-1]+1; j<=v[i]; j++){
h[j]=n-i+1+s[i-1]/j;
d[j]=max2(d[j-1], 1LL*j*h[j]);
}
}
for(i=s[n]/v[n]; i>0; i--)
u[i]=max2(u[i+1], s[n]-s[n]%i);
for(i=1; i<=q; i++){
x=read();
if(x<=v[n+1]) ans=d[x];
else ans=u[s[n]/x+1];
fprintf(fout, "%lld\n", ans);
}
fclose(fin);
fclose(fout);
return 0;
}