Pagini recente » Cod sursa (job #722428) | Cod sursa (job #396074) | Cod sursa (job #2490947) | Cod sursa (job #2957853) | Cod sursa (job #266005)
Cod sursa(job #266005)
#include <stdio.h>
#include <algorithm>
#define maxn 1000010
using namespace std;
long long n, i, j, k, m, t, ma, x;
long long d[maxn], sol[maxn], q[maxn], p[maxn], poz;
inline int cmp(long x, long y)
{
return q[x]<q[y];
}
int main()
{
freopen("caramizi.in", "r", stdin);
freopen("caramizi.out", "w", stdout);
scanf("%lld%lld", &n, &m);
for(i=1; i<=n; i++)
{
scanf("%lld", &d[i]);
}
sort(d+1, d+n+1);
for(i=1; i<=m; i++)
{
scanf("%lld", &q[i]);
p[i]=i;
// printf("%d\n", p[i]);
}
sort(p+1, p+m+1, cmp);
sort(q+1, q+m+1);
/* for(i=1; i<=m; i++)
{
printf("%lld ", q[i]);
printf("%d\n", p[i]);
}*/
t=-1;
d[0]=1;
poz=1;
d[n+1]=maxn;
for(i=0; i<=n; i++)
{
t+=d[i];
for(j=d[i]; j<d[i+1]; j++)
{
x = t-t%j+(n-i)*j;
if(x>ma)
{
ma=x;
}
if(j==q[poz])
{
sol[p[poz]]=ma;
poz++;
}
}
}
for(i=1; i<=m; i++)
{
printf("%lld\n", sol[i]);
}
return 0;
}