Olimpiada#7503

Olimpiada (Həll təhlili)

Yarışmaya ümumilikdə s = \sum_{i=1}^n a_i iştirakçı gəlib. Hər auditoriya kompüter ilə təmin edildiyi üçün, ən azı otaq tələb olunacaq.

Tutaq ki, — bir komandadakı iştirakçıların ən böyük sayıdır (bütün a_i ədədlərinin maksimum dəyəri). Əgər p > ⌈s/m⌉ olsa, o zaman ən azı otaq tələb olunacaq.

Konstruktiv olaraq göstərmək olar ki, həmişə olimpiadanın keçirilməsi üçün max(⌈s/m⌉, p) auditoriya kifayətdir.

Misal

Olimpiadaya 2 + 3 + 4 + 1 + 2 = 12 şagird gəlib. Hər sinif kompüter ilə təmin olunduğuna görə, olimpiadanın keçirilməsi üçün ən azı 12 / 3 = 4 sinif tələb olunur.

Ən böyük iştirakçı sayı üçüncü komandadır — nəfər. Onları fərqli sinifdə bir-bir oturtmaq olar.

Məsələn, iştirakçıların aşağıdakı şəkildə oturması mümkündür:

Alqoritmin təcrübəsi

Giriş məlumatlarını oxuyuruq.

scanf("%d %d",&n,&m);

Ümumi iştirakçı sayını və ən böyük komandanın ölçüsünü hesablayırıq.

p = 0;
for (i = 0; i < n; i++)
{
  scanf("%d",&x);
  s += x;
  if (x > p) p = x;
}

tavanı olan dəyər res = ⌈s/m⌉ kimi (s + m - 1) / m hesablanır.

res = (s + m - 1) / m;

Əgər p > ⌈s/m⌉ olsa, cavab olacaq.

if (res < p) res = p;

Cavabı çıxışa yazırıq.

printf("%d\n",res);