Pagini recente » Cod sursa (job #2172723) | Cod sursa (job #2789500) | Cod sursa (job #920697) | Cod sursa (job #1804973) | Cod sursa (job #253827)
Cod sursa(job #253827)
#include<stdio.h>
#define NMAX 200011
#include<algorithm>
using namespace std;
int y,cmax,m,lmax,n,c[NMAX],l[NMAX],i;
int viz[1000011],b[1000111];
long long x,S,s[1000011],d[1000011];
long long car(int X){
long long rez=0;
// if()
rez=s[X];
rez+=(long long)((long long)n - (long long)b[X]) * X;
rez/=X;
rez*=X;
return rez;
}
int main(){
FILE *f=fopen("caramizi.in","r");
FILE *g=fopen("caramizi.out","w");
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++){
fscanf(f,"%d",&y);
viz[y]++;
S+=y;
if(y > cmax)
cmax = y;
}
for(i=1;i<=m;i++){
fscanf(f,"%d",&l[i]);
if(l[i] > lmax)
lmax = l[i];
}
int q=max(cmax, lmax);
for(i=1; i<=q; i++){
b[i] = b[i-1] + viz[i-1];
s[i] = s[i-1] + (long long)viz[i-1]*(long long)((long long)i-(long long)1);
}
d[1]=n;
for(i=2; i<=lmax; i++){
d[i]=d[i-1];
x=car(i);
if(d[i] < x)
d[i] = x;
}
for(i=1; i<=m; i++)
fprintf(g,"%lld\n",d[l[i]]);
fclose(f);
fclose(g);
return 0;
}