Witam, ostatnio jestem dość przybity bo nic mi nie wychodzi ze spoj'a ;( Uwierzcie, też mi nie jest przyjemnie zadawać to pytanie...
Oto link do zadania: http://pl.spoj.com/problems/MWPZ06H/
A to mój kod:
#include <iostream>
#include <vector>
auto sortedPoints(const std::vector<int> &points) {
std::vector<int> toReturn;
// ------------------------------------------- znalezienie jednego lub kilka maksymalnych wyników
int maxCount{1};
int max = points[0];
for (int i = 1; i < points.size(); i++) { //wyznaczanie maksimum i jego ilości ( bo może być kilka maksymalnych wartości )
if (points[i] > max) {
max = points[i];
maxCount = { 1 };
}
else if (points[i] == max) {
++maxCount;
}
}
for (int i = 0; i < maxCount; i++) { //zapisanie maksymalnych punktów na początek wektora
toReturn.push_back(max);
}
// ---------------------------------------- posortowanie rosnąco pozostałych wyników
std::vector<int> ntb; //ntb od "not_the_biggest"
for (int i = 0; i < points.size(); i++) { //dodawanie do wektora pomocniczego elementów niebędących maksimum
if (points[i] != max)
ntb.push_back(points[i]);
}
for (int i = 1; i < ntb.size(); i++) { //sortujemy je od najmniejszego do największego
for (int j = 1; j < ntb.size(); j++) {
if (ntb[i] < ntb[i - 1]) {
int t = ntb[i];
ntb[i] = ntb[i - 1];
ntb[i - 1] = t;
}
}
}
for (int i = 0; i < ntb.size(); i++) { //dopisujemy do częściowo zapełnionego wektora z odpowiednią kolejności wyników
toReturn.push_back(ntb[i]);
}
// ----------------------------------------
return toReturn;
}
int main(){
int D;
std::cin >> D;
for (int i = 0; i < D; i++) {
int N;
std::cin >> N;
std::vector<int> points(N);
for (auto& i : points) {
std::cin >> i;
}
auto res = sortedPoints(points);
for (auto i : res) { //wypis wyników
std::cout << i << " ";
}
std::cout << "\n";
}
}
Myślę że dość dokładnie opisałem tok mojego myślenia...
Dla wszystkich danych jakie były podane wydaje mi się że program udziela poprawnej odpowiedzi. Sprawdziłem to nawet na kompilatorze z jakiego spoj korzysta: https://ideone.com/bhHA6y
Jednak sędzia daje mi komunikat że błędna odpowiedź (wielka szkoda że nie podaje dla jakich danych wejściowych).
Testowałem to na różne sposoby i kilka razy czytałem od nowa treść zadania. Jednak dalej nic nie znalazłem.
Co pominąłem/nie dopilnowałem rozwiązując zadanie?
Będę bardzo wdzięczny za naprowadzenie mnie.