Cod sursa(job #254277)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 7 februarie 2009 09:36:46
Problema Caramizi Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
#include <algorithm>
using namespace std;

long long A[200000];
int B[200000],C[200000];


int main()
{
freopen("caramizi.in","r",stdin);
freopen("caramizi.out","w",stdout);

int n,m,i,j,nr,k;
scanf("%d%d",&n,&m);

for (i=1;i<=n;i++) scanf("%d",&B[i]),A[1]+=B[i];

sort(B+1,B+n+1);

for (i=2;i<=n;i++)
{
nr=0;
for (j=1;j<=n;j++) C[j]=B[j];
for (j=1;n-j+1>=i;j++)
while (C[j])
{
nr++;
C[j]--;
for (k=0;k<i-1;k++) C[n-k]--;
sort(C+j,C+n+1);
}
A[i] = nr;
}

long long max;
for (i=1;i<=m;i++)
{
max = 0;
scanf("%d",&k);
for (j=1;j<=n;j++) if (A[j]>k) if (j*k>max) max = j*k;
                               else;
                   else if (A[j]*j>max) max = A[j]*j;
printf("%lld\n",max);
}
}