Pagini recente » Cod sursa (job #3194258) | Cod sursa (job #3263657) | Cod sursa (job #2542796) | Cod sursa (job #3240474) | Cod sursa (job #464893)
Cod sursa(job #464893)
#include<fstream.h>
#include<algorithm>
using namespace std;
long long S[1000010], V[1000010];
int N, M;
int main()
{ifstream q("caramizi.in");
ofstream w("caramizi.out");
q>>N>>M;
int c, i, maxc=0;
for(i=1;i<=N;i++)
{q>>c;
maxc=max(maxc,c);
V[c]++;}
for(i=1;i<=maxc;i++)
S[i]=S[i-1]+V[i-1]*(i-1);
long long sum=S[maxc]+V[maxc]*maxc;
for(i=maxc;i>0;i--)
V[i]+=V[i+1];
for(i=1;i<=maxc;i++)
{S[i]=(S[i]+V[i]*i)/i*i;
S[i]=max(S[i],S[i-1]);}
N=sum/maxc;
V[N+1]=S[maxc];
for(i=N;i>0;i--)
{V[i]=(long long) (sum/i*i);
V[i]=max(V[i],V[i+1]);}
while (M--)
{q>>c;
if(c<=maxc)
w<<S[c]<<"\n";
else
w<<max((long long) (sum/c*c),V[sum/c+1])<<"\n";}
return 0;}