Pagini recente » Cod sursa (job #700198) | Cod sursa (job #1606915) | Cod sursa (job #1236672) | Cod sursa (job #3000370) | Cod sursa (job #897243)
Cod sursa(job #897243)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("caramizi.in");
ofstream fout("caramizi.out");
typedef long long i64;
const int nmax= 200000, xmax= 1000000;
i64 s[nmax+1];
int freq[xmax+1];
int lo[xmax+1], hi[nmax+2];
int main(){
int n, nq;
fin>>n>>nq;
for (int i= 1; i<=n; ++i){
fin>>s[i];
++freq[s[i]];
}
sort(s+1, s+n+1);
for (int i= 2; i<=n; ++i){
s[i]+= s[i-1];
}
for (int i= xmax-1; i>0; --i){
freq[i]+= freq[i+1];
}
for (int i= 1; i<=xmax; ++i){
lo[i]= ((i64)freq[i]*i+s[n-freq[i]])/i*i;
if (lo[i]<lo[i-1]){
lo[i]= lo[i-1];
}
}
for (int i= s[n]/(s[n]-s[n-1]); i>0; --i){
hi[i]= s[n]-s[n]%i;
if (hi[i]<hi[i+1]){
hi[i]= hi[i+1];
}
}
for (int cq= 1; cq<=nq; ++cq){
int x;
fin>>x;
if (x>xmax){
fout<<hi[s[n]/x+1]<<"\n";
}else{
fout<<lo[x]<<"\n";
}
}
return 0;
}