Pagini recente » Cod sursa (job #2676291) | Cod sursa (job #998369) | Cod sursa (job #883689) | Cod sursa (job #1397853) | Cod sursa (job #1372278)
#include<stdio.h>
#include<algorithm>
#define N 1000009
#define M 200009
long long din[N+1],inalt[N+1],v[M+1];
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+1;
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;
}