Pagini recente » Cod sursa (job #2376040) | Cod sursa (job #2138625) | Cod sursa (job #1729645) | Cod sursa (job #1869048) | Cod sursa (job #253800)
Cod sursa(job #253800)
#include <cstdio>
#define FIN "caramizi.in"
#define FOUT "caramizi.out"
#define N 200005
int v[N],n,m,sum[N],max;
void read()
{
int i;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d%d", &n, &m);
for (i = 1; i <= n; ++i)
{
scanf("%d", &v[i]);
sum[i] = sum[i-1] + v[i];
}
}
int cautbin (int x)
{
int p = 1, u = n, mm;
while (p+1<u)
{
mm = (p + u)/2;
if ( v[mm] > x)
u = mm-1;
else
p = mm;
}
if ( v[p-1] > x)
--p;
if ( v[p] < x )
++p;
if ( p == n )
return sum[n] / x;
if ( v[p] >= x)
return (n - p + 1) + (sum[p-1] / x);
return sum[p] / x;
}
void solve()
{
int i,j,p,u;
for (i = 1; i <= m; ++i)
{
scanf("%d", &u);
max = 0;
for (j = 1; j <= u; ++j)
{
p = j * cautbin(j);
if (p > max)
max = p;
}
printf("%d\n", max);
}
//.printf("\n");
}
int main()
{
read();
solve();
//write();
}