Witam, mam mały problem z zadaniem na spoju, a mianowicie zestaw testowy działa, nawet dość ekstremalne i nieprzwidywalne testy działają, a jednak na spoju jest Wrong Answer, link do zadania -> http://pl.spoj.com/problems/MWPZ06H/ Oczywiście jak to na spoju teść zadania jest poprzedzona fabularyzowaną historią ze zwrotami akcji :) więć żeby skróce treść zadania trzeba, posortować liczby (może być ich maksymalnie 200 ) z przedziału liczb Naturalnych. Trzeba posortować tak że największa wartość jest na początku (jeżeli są dwie takie same największe wartości lub więcej to też mają być na początku) a potem w kolejności rosnącej reszte wartości.
Tutaj mój kod
#include <iostream>
using namespace std;
void quicksort(int *tablica, int lewy, int prawy)
{
int v=tablica[(lewy+prawy)/2];
int i,j,x;
i=lewy;
j=prawy;
do
{
while(tablica[i]<v) i++;
while(tablica[j]>v) j--;
if(i<=j)
{
x=tablica[i];
tablica[i]=tablica[j];
tablica[j]=x;
i++;
j--;
}
}
while(i<=j);
if(j>lewy) quicksort(tablica,lewy, j);
if(i<prawy) quicksort(tablica, i, prawy);
}
int main()
{
int ile=0, uczestnicy=0, s=0;
cin>>ile;
for(int i=0; i<ile; i++)
{
cin>>uczestnicy;
int *punkty;
punkty = new int [uczestnicy];
for(int j=0; j<uczestnicy; j++)
{
cin>>punkty[j];
}
if(uczestnicy == 1)
{
cout<<punkty[uczestnicy-1]<<endl;
}
else
{
quicksort(punkty, 0, punkty[uczestnicy-1]);
for(int q=0; q<uczestnicy; q++)
{
if(punkty[uczestnicy-1] == punkty[q])
{
cout<<punkty[q]<<endl;
s++;
}
}
for(int z=0; z<uczestnicy-s; z++)
{
cout<<punkty[z]<<endl;
}
}
punkty = NULL;
uczestnicy=0;
s=0;
}
return 0;
}
spojowy test
Wejście:
3
5
1 2 3 4 5
5
4 5 2 3 5
2
1 1
Wyjście:
5 1 2 3 4
5 5 2 3 4
1 1