Сума без максимального#7831

Сума без максимального (Розбір)

Знайдемо максимальний елемент масиву. Обчислимо суму всіх чисел, що не дорівнюють максимальному. Зауважимо, що максимальних елементів у масиві може бути кілька.

Приклад

Найбільший елемент у наведеному прикладі дорівнює .

Сума елементів, що не дорівнюють максимальному, дорівнює 5 + 3 + 4 + 6 = 18.

Реалізація алгоритму

Оголосимо робочий масив.

int m[101];

Читаємо вхідний масив.

scanf("%d",&n);
for(i = 0; i < n; i++)
  scanf("%d",&m[i]);

Обчислюємо максимальний елемент .

mx = -100;
for(i = 0; i < n; i++)
  if (m[i] > mx) mx = m[i];

Знаходимо суму всіх чисел масиву, що не дорівнюють максимальному .

s = 0;
for(i = 0; i < n; i++)

Якщо поточний елемент не дорівнює максимуму , то додаємо його до суми .

  if (m[i] != mx) s += m[i];

Виводимо шукану суму.

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

Реалізація алгоритму — STL

Читаємо вхідні дані. Вхідну послідовність зберігаємо у векторі .

scanf("%d", &n);
v.resize(n);
for (i = 0; i < n; i++)
  scanf("%d", &v[i]);

Знаходимо максимальний елемент .

mx = *max_element(v.begin(), v.end());

Замінемо всі елементи у масиві на .

replace(v.begin(), v.end(), mx, 0);

Знайдемо суму всіх елементів у масиві (максимальні елементи в ньому замінені на ).

s = accumulate(v.begin(), v.end(), 0);

Виводимо відповідь — суму всіх елементів без максимальних.

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

Java реалізація

import java.util.*;

public class Main 
{
  public static void main(String[] args) 
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
    int m[] = new int[n];
    for (int i = 0; i < n; i++)
      m[i] = con.nextInt();
    
    int max = -100;
    for(int i = 0; i < n; i++)
      if (m[i] > max) max = m[i];

    int s = 0;
    for(int i = 0; i < n; i++)
      if (m[i] != max) s += m[i];
    
    System.out.println(s);
    con.close();
  }
}

Python реалізація

Читаємо вхідні дані.

n = int(input())
lst = list(map(int,input().split()))

Знаходимо максимальний елемент списку .

mx = max(lst)

У змінній знаходимо суму всіх елементів списку , що не дорівнюють максимальному значенню .

sum = 0
for x in lst:
  if x != mx: sum += x

Виводимо відповідь.

print(sum)

Python реалізація — сумування

Читаємо вхідні дані.

n = int(input())
lst = list(map(int,input().split()))

Знаходимо максимальний елемент списку .

mx = max(lst)

У змінній обчислюємо суму всіх елементів списку , що не дорівнюють максимальному значенню .

res = sum(x for x in lst if x != mx)

Виводимо відповідь.

print(res)