Pagini recente » Concursuri organizate de infoarena | Cod sursa (job #493896) | Cod sursa (job #402192) | Cod sursa (job #1010307) | Cod sursa (job #467579)
Cod sursa(job #467579)
#include <stdio.h>
#include <algorithm>
using namespace std;
long int c[100001], car[100001];
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 = 2;
for (i=1; i<=suma; ++i)
{
if (i <= lim)
{
if (i == lim && i > c[1])
inaltime --;
if (suma >= inaltime * i)
car[i] = max (car[i-1], inaltime * i);
else
car[i] = suma;
}
else
{
car[i] = car[i-1];
// inaltime --;
lim += c[j];
j ++;
}
if (i == c[1])
inaltime --;
}
/*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;
}