Pagini recente » Cod sursa (job #2008529) | Cod sursa (job #1545871) | Istoria paginii utilizator/bucurantonia | Rating Popescu Alexandru Catalin (PopescuCata) | Cod sursa (job #2013833)
#include <bits/stdc++.h>
const int MAXC = (int) 1e6;
int fr[MAXC + 1];
long long sol[MAXC + 1];
int main() {
FILE *fi, *fout;
int i, n, m, l, c;
fi = fopen("caramizi.in" ,"r");
fout = fopen("caramizi.out" ,"w");
fscanf(fi,"%d %d " ,&n,&m);
for(i = 1; i <= n; i++) {
fscanf(fi,"%d " ,&c);
fr[c]++;
}
long long s = 0;
int p = 0;
for(i = 1; i <= MAXC; i++) {
p += fr[i];
s += 1LL * i * fr[i];
sol[i] = std::max(sol[i - 1], 1LL * (s / i) * i + 1LL * (n - p) * i);
}
for(i = 1; i <= m; i++) {
fscanf(fi,"%d " ,&l);
if(s <= l)
fprintf(fout,"%lld\n" ,s);
else {
l = std::min(l, MAXC);
fprintf(fout,"%lld\n" ,sol[l]);
}
}
fclose(fi);
fclose(fout);
return 0;
}