Pagini recente » Cod sursa (job #2326941) | Cod sursa (job #2713377) | Cod sursa (job #2271835) | Cod sursa (job #1674143) | Cod sursa (job #1574526)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("caramizi.in");
ofstream fout("caramizi.out");
const int nmax= 200000;
const int vmax= 1000000;
int c[nmax+2], d[vmax+1], d2[vmax+1];
int main( ) {
int n, m;
fin>>n>>m;
for ( int i= 1; i<=n; ++i ) {
fin>>c[i];
}
sort( c+1, c+n+1 );
c[0]= 1, c[n+1]= vmax+1;
int aux= -1;
for ( int i= 0; i<=n; ++i ) {
aux= aux+c[i];
for ( int j= c[i]; j<=c[i+1]-1; ++j ) {
d[j]= max(d[j-1], (aux/j+n-i)*j);
}
}
for ( int i= aux/c[n]; i>=1; --i ) {
d2[i]= max(d2[i+1], aux-aux%i);
}
for ( int cnt= 1; cnt<=m; ++cnt ) {
int y, sol= 0;
fin>>y;
sol= d2[aux/y+1];
if ( y<=vmax ) {
sol= d[y];
}
fout<<sol<<"\n";
}
return 0;
}