Pagini recente » Cod sursa (job #2758647) | Cod sursa (job #3134372) | Cod sursa (job #2608342) | Cod sursa (job #455782) | Cod sursa (job #254963)
Cod sursa(job #254963)
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAX_N = 200010;
const int MAX_L = 1000010;
int n, m;
long long sum;
int a[MAX_N];
long long sol[MAX_L];
int main()
{
int i, x;
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];
}
sort(a + 1, a + n + 1);
int q = 0;
long long s = 0;
for (i = 1; i <= sum + 1 && i < MAX_L; ++i)
{
long long z = 0;
while (a[q + 1] < i && q < n)
{
++q;
s += a[q];
}
z = (long long)(n - q) * i + (long long)(s / i) * i;
sol[i] = (sol[i - 1] > z) ? sol[i - 1] : z;
}
for (i = 1; i <= m; ++i)
{
scanf("%d", &x);
printf("%lld\n", sol[x]);
}
}