Pagini recente » Cod sursa (job #1946420) | Cod sursa (job #1653471) | Cod sursa (job #1546257) | Cod sursa (job #2708631) | Cod sursa (job #1007849)
#include <fstream>
# include <algorithm>
using namespace std;
typedef long long ll;
ifstream fin("caramizi.in"); ofstream fout("caramizi.out");
const int MAX = 200005, oo = 1000005;
ll sol = -1, dp[oo], rez[oo];
int N, M, C[MAX];
int main ()
{
fin >> N >> M;
for (int i = 1; i <= N; ++i)
fin >> C[i];
C[0] = 1, C[N + 1] = oo;
sort (C + 1, C + N + 1);
for (int i = 0; i <= N; ++i) {
sol += C[i];
for (int j = C[i]; j < C[i + 1]; ++j)
dp[j] = max (dp[j - 1], sol - sol % (j * 1LL) + 1LL * (N - i) * j);
}
for (int i = sol / C[N]; i; --i)
rez[i] = max (sol - sol % i, rez[i + 1]);
for (int i = 1, x; i <= M; ++i) {
fin >> x;
if(x < oo)
fout << dp[x] << "\n";
else
fout << rez[sol / x + 1] << "\n";
}
}