Cod sursa(job #429800)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 30 martie 2010 14:32:04
Problema Caramizi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
//O(LMAX*N) ar trebui sa ia 50 puncte

#include<iostream>
#include<string>

using namespace std;

#define NM 200005

int N,M,C[NM],L[NM];
long long B[NM];

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("%d",&C[i]);
    
    int LMAX=0;
    
    for(int i=1;i<=M;++i)
    {
       scanf("%d",&L[i]);
       LMAX=max(LMAX,L[i]);
    }    
    
    for(int l=1;l<=LMAX;++l)
    {
       long long total=0;     
            
       for(int i=1;i<=N;++i)
          total+=min(l,C[i]);
       
       B[l]=max(B[l-1],(total/l)*l);        
    }    
    
    for(int i=1;i<=M;++i)
       printf("%lld\n",B[L[i]]);
    
    return 0;
}