Pagini recente » Cod sursa (job #195112) | Cod sursa (job #244641) | Cod sursa (job #267565) | Cod sursa (job #1485204) | Cod sursa (job #467623)
Cod sursa(job #467623)
#include <stdio.h>
#include <algorithm>
using namespace std;
long int c[200001], car[200000001];
long int n, m, i, j, k;
long int suma, lim;
long int inaltime;
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,"%ld", &c[i]);
suma += c[i];
}
sort (c + 1, c + 1 + n);
lim = c[1];
inaltime = n;
j = 1;
for (i=1; i<suma; ++i)
{
if (i <c[j])
{
if (i * inaltime <= suma)
car[i] = max (car[i-1], i * inaltime);
else
car[i] = max (car[i-1], suma);
}
else
{
inaltime --;
if (i * inaltime <= suma)
car[i] = max (car[i-1], i * inaltime);
else
car[i] = max (car[i-1], suma);
j ++;
}
}
car[suma] = suma;
/*for (i=1; i<=suma; ++i)
printf ("%d : %d\n", i, car[i]);*/
for (i=1; i<=m; ++i)
{
fscanf (f,"%ld", &j);
if (j > suma)
fprintf (g,"%ld\n", car[suma]);
else
fprintf (g,"%ld\n", car[j]);
}
fclose(g);
fclose(f);
return 0;
}