Pagini recente » Cod sursa (job #1493963) | Cod sursa (job #1587800) | Cod sursa (job #979166) | Cod sursa (job #303396) | Cod sursa (job #1372313)
#include<stdio.h>
#include<algorithm>
#define N 1000005
#define M 200005
long long din[N],inalt[N];
int v[M];
int main()
{
FILE *fin,*fout;
fin=fopen("caramizi.in","r");
fout=fopen("caramizi.out","w");
int n,m;
fscanf(fin,"%d%d",&n,&m);
long long i,j;
for(i=1;i<=n;i++)
fscanf(fin,"%lld",&v[i]);
v[0]=1;
v[n+1]=N;
std::sort(v+1,v+n+1);
int sum=-1;
for(i=0;i<=n;i++)
{
sum+=v[i];
for(j=v[i];j<v[i+1];j++)
{
din[j]=sum-sum%j+(n-i)*j;
if(din[j]<din[j-1])
din[j]=din[j-1];
}
}
i=sum/v[n];
while(i){
inalt[i]=inalt[i+1];
if(sum-sum%i>inalt[i])
inalt[i]=sum-sum%i;
i--;
}
for(i=0;i<m;i++)
{
int x;
fscanf(fin,"%d",&x);
if(x<N)
fprintf(fout,"%lld\n",din[x]);
else
fprintf(fout,"%lld\n",inalt[sum/x+1]);
}
return 0;
}