Somma senza il massimo#7831

Somma senza il massimo (Editoriale)

Per prima cosa, trova l'elemento massimo dell'array. Poi calcola la somma di tutti gli elementi il cui valore è diverso dal massimo. Nota che il valore massimo può comparire nell'array più di una volta; in tal caso, tutti questi elementi vengono esclusi dalla somma.

Esempio

L'elemento più grande nell'esempio dato è .

La somma degli elementi diversi dal massimo è 5 + 3 + 4 + 6 = 18.

Implementazione dell'algoritmo

Dichiara l'array.

int m[101];

Leggi i dati di input.

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

Calcola l'elemento massimo .

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

Trova la somma di tutti gli elementi dell'array diversi dal massimo .

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

Se l'elemento corrente è diverso dal massimo , aggiungilo alla somma .

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

Stampa la somma.

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

Implementazione dell'algoritmo — STL

Leggi i dati di input.

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

Calcola l'elemento massimo .

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

Sostituisci tutte le occorrenze di nell'array con .

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

Calcola la somma di tutti gli elementi dell'array modificato (in cui gli elementi massimi sono stati sostituiti con ).

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

Stampa la risposta — la somma di tutti gli elementi esclusi quelli massimi.

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

Implementazione in 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();
  }
}

Implementazione in Python

Leggi i dati di input.

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

Trova l'elemento massimo nella lista .

mx = max(lst)

Nella variabile calcola la somma di tutti gli elementi della lista diversi dal valore massimo .

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

Stampa la risposta.

print(sum)

Implementazione in Python — somma

Leggi i dati di input.

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

Trova l'elemento massimo nella lista .

mx = max(lst)

Nella variabile calcola la somma di tutti gli elementi della lista diversi dal valore massimo .

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

Stampa la risposta.

print(res)