Pagini recente » Cod sursa (job #1469474) | Cod sursa (job #1192171) | Cod sursa (job #2778490) | Cod sursa (job #1872461) | Cod sursa (job #253913)
Cod sursa(job #253913)
#include <stdio.h>
#include <algorithm>
using namespace std;
int n,m,num;
long sir[200100];
long pre[200100];
long rez;
long S;
int maxi(int a,int 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 ("%ld ",&sir[i]);
sort(sir+1,sir+n);
int poz=0;
for (int i=1;i<=200001;i++)
{
while (sir[poz]<i)
{
S+=sir[poz];
poz++;
if (sir[poz]==0)
break;
}
int x=0;
if (sir[poz]!=0)
x=(n-poz+1)*i;
int lol=S/i;
x+=i*lol;
pre[i]=maxi(pre[i],x);
pre[i]=maxi(pre[i],pre[i-1]);
}
for (int i=0;i<m;i++)
{
scanf ("%d ",&num);
if (num>200010)
num=200010;
while (!pre[num])
num--;
printf("%ld\n",pre[num]);
}
return 0;
}