Pagini recente » Cod sursa (job #1177185) | Cod sursa (job #190190) | Cod sursa (job #1785950) | Cod sursa (job #2466807) | Cod sursa (job #254087)
Cod sursa(job #254087)
#include <stdio.h>
#include <algorithm>
using namespace std;
int n,m,num;
long long sir[200100];
long long pre[200100];
long long rez;
long long S;
long long maxi(long long a,long long b)
{
return a>b?a:b;
}
int main ()
{
freopen ("caramizi.in","r",stdin);
freopen ("caramizi.out","w",stdout);
scanf ("%d %d",&n,&m);
for (int i=1;i<=n;i++)
scanf ("%lld ",&sir[i]);
sort(sir+1,sir+n);
long long poz=0;
for (long long i=1;i<=200001;i++)
{
while (sir[poz]<i)
{
S+=sir[poz];
poz++;
if (sir[poz]==0)
break;
}
long long x=0;
if (sir[poz]!=0)
x=(n-poz+1)*i;
int lol=S/i;
x+=i*lol;
pre[i]=maxi(pre[i-1],x);
}
for (int i=0;i<m;i++)
{
scanf ("%lld ",&num);
if (num>200010)
num=200010;
while (!pre[num])
num--;
printf("%lld\n",pre[num]);
}
return 0;
}