Scrieți un program care citește 5 numere întregi și calculează suma celor
mai mari 3 numere dintre ele pe baza unui algoritm ce realizează un număr
minim de comparații. Câte comparații realizează algoritmul vostru?
# include <stdio.h>
# include <limits.h>
int main()
{
int a,b,c,d,e,m1,m2;
m1 = m2 = INT_MAX;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
if( a <= b )
{
if( a < m1 ) m1 = a;
if( b < m2 ) m2 = b;
}
else
{
if( a < m2 ) m2 = a;
if( b < m1 ) m1 = b;
}
if( c <= d )
{
if( c < m1 ) m1 = c;
if( d < m2 ) m2 = d;
}
else
{
if( c < m2 ) m2 = c;
if( d < m1 ) m1 = d;
}
if( e < m1 )
{
m2 = m1;
m1 = e;
}
else if( e < m2 )
m2 = e;
printf("%d",a+b+c+d+e-m1-m2);
return 0;
}
Algoritmul meu face 7 comparații. Se pot face mai puține comparații ?