Witam,
Mam problem z zadaniem "Konkrus Pseudomatematyczny" ID: 1149
Mój kod przechodzi wszelkie możliwe testy jakie mu narzucę, lecz SPOJ nieustannie go odrzuca.
Czy mogę liczyć na jakieś wskazówki?
int max(int *tab, int n)
{
int max;
for (int i = 0; i < n; ++i)
{
if (i >= n) break;
if (tab[i] > tab[i + 1]) max = tab[i];
}
return max;
}
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 test;
cin >> test;
for (int t = 1; t <= test; ++t)
{
int n;
cin >> n;
int *tab = new int[n];
for (int i = 0; i < n; ++i)
{
cin >> tab[i];
}
quicksort(tab, 0, n - 1);
for (int i = 0; i < n; ++i)
{
if (tab[i] == max(tab, n)) cout << tab[i] << " ";
}
for (int i = 0; i < n; ++i)
{
if (tab[i] == max(tab, n)) continue;
cout << tab[i] << " ";
}
delete[] tab;
}
system("PAUSE");
return 0;
}