Cod sursa(job #2022049)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 15 septembrie 2017 15:21:00
Problema Caramizi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
# include <fstream>
# include <cstdio>
# define DIM 1000010
using namespace std;
long long d[DIM],D[DIM],s;
int f[DIM],c[DIM],l[DIM],n,m,i,poz,x,la;
int main () {
    freopen ("caramizi.in","r",stdin);
    freopen("caramizi.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++){
        scanf("%d",&c[i]);
        f[c[i]]++;
    }
    for(i=1;i<=DIM-5;i++){
        s+=1LL*i*f[i];
        if(f[i])
            la=i;
        poz+=f[i];
        d[i]=max(d[i-1],1LL*i*(n-poz+s/i));
    }
    for(i=s/la;i>0;i--)
        D[i]=max(D[i+1],s-s%i);
    for(i=1;i<=m;i++){
        scanf("%d",&x);
        if(x<=1e6)
            printf("%lld\n",d[x]);
        else
            printf("%lld\n",D[s/x+1]);
    }
    return 0;
}