Знайдемо максимальний елемент масиву. Обчислимо суму всіх чисел, що не дорівнюють максимальному. Зауважимо, що максимальних елементів у масиві може бути кілька.
Приклад
Найбільший елемент у наведеному прикладі дорівнює .
Сума елементів, що не дорівнюють максимальному, дорівнює 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)