Pagini recente » Cod sursa (job #2666066) | Cod sursa (job #2209909) | Cod sursa (job #2857352) | Cod sursa (job #2886547) | Cod sursa (job #253897)
Cod sursa(job #253897)
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAX_N = 10010;
const int MAX_L = 10000;
int n, m, mx;
int a[MAX_N], b[MAX_N], par[MAX_N];
long long c[MAX_L];
long long sum;
int main()
{
int i, j;
freopen("caramizi.in", "r", stdin);
freopen("caramizi.out", "w", stdout);
scanf("%d %d", &n, &m);
for (i = 1; i <= n; ++i) { scanf("%d", &a[i]); sum += a[i]; par[i] = par[i - 1] + a[i]; }
sort(a + 1, a + n + 1);
for (i = 1; i <= m; ++i)
{
scanf("%d", &b[i]);
if (b[i] > mx) mx = b[i];
}
for (i = 1; i <= mx; ++i)
{
long long sol = 0, s = 0;
for (j = n; j > 0; --j)
{
if (a[j] < i) s += i - a[j];
if (par[j - 1] >= s) sol = (long long)(n - j + 1) * i;
}
c[i] = (sol > c[i - 1]) ? sol : c[i - 1];
}
for (i = 1; i <= m; ++i)
printf("%lld\n", c[b[i]]);
}