Masz błędną odpowiedź. Na przykład dla danych:
1
4
4 4 4 5
program generuje błędne rozwiązanie:
5 5 5 4
Polecam użyć w zadaniu kontener std::multimap<int>. Dodawane do niego elementy ( tutaj punkty ) są od razu wstawiane w kolejności rosnącej, a więc odpada potrzeba późniejszego ich sortowania.
#include <iostream>
#include <set>
using namespace std;
int main()
{
int tries, members, points;
cin >> tries;
for( int t {0} ; t<tries ; ++t )
{
cin >> members;
multiset<int> ranking;
for( int i {0} ; i<members ; ++i )
{
cin >> points;
ranking.insert(points);
}
int best {*crbegin(ranking)};
for( auto iter = crbegin(ranking) ; iter != crend(ranking) ; ++iter )
{
if( *iter != best ) break;
cout << best << ' ';
}
for( auto iter = cbegin(ranking) ; iter != cend(ranking) ; ++iter )
{
if( *iter == best ) break;
cout << *iter << ' ';
}
cout<<endl;
}
}
https://godbolt.org/z/9fY3cWoqd
A tak wygląda już poprawiony fragment kodu, który spowodował problem w SPOJ:
int Najlepsza = -1, Najmniejsza[2000], Punkty[2000];
int IleNaj = 0, suma = 0;
for (int j = 0; j != Members; j++)
{
cin>>Punkty[j];
if (Najlepsza < Punkty[j])
{
Najlepsza = Punkty[j];
IleNaj = 0;
}
else if ( Najlepsza == Punkty[j] ) IleNaj++;
}