Pagini recente » Cod sursa (job #2156263) | Cod sursa (job #550746) | Cod sursa (job #2094076) | Cod sursa (job #2429231) | Cod sursa (job #294438)
Cod sursa(job #294438)
using namespace std;
#include <cstdio>
#include <algorithm>
#define Nmax 1000011
int n, m, c[Nmax], l[Nmax], cmax, i, nr[Nmax], lmax;
long long sol[Nmax], s[Nmax], S;
long long calc(long long x){
return ( s[x] + x * ((long long)n - (long long)nr[x]) ) / x * x;
}
int main(){
FILE *f = fopen("caramizi.in", "r");
FILE *g = fopen("caramizi.out", "w");
fscanf(f,"%d %d",&n, &m);
for( i = 1; i <= n; i++){
fscanf(f,"%d",&c[i]);
s[c[i] + 1]+=(long long)c[i];
nr[ c[i] + 1 ]++;
if( c[i] > cmax ) cmax = c[i];
}
for(i = 1; i <= m; i++){
fscanf(f,"%d",&l[i]);
if( l[i] > lmax ) lmax = l[i];
}
int q = max(cmax, lmax);
for( i = 1; i <= q + 1; i++)
s[i]+=s[i-1], nr[i]+=nr[i-1];
for(i = 1; i <= q; i++){
sol[i] = calc(i);
if(sol[i-1] > sol[i])
sol[i] = sol[i-1];
}
S = s[cmax + 1];
for(i = 1; i <= m; i++)
fprintf(g,"%lld\n",sol[l[i]]);
fclose(f);
fclose(g);
return 0;
}