Witam, mam problem z tym zadaniem na SPOJ-u : https://pl.spoj.com/problems/MWPZ06H/ , ponieważ sędzia stwierdza że błędna odpowiedź a u mnie (code::blocks) wszystko dobrze działa. Nie wiem w czym tkwi problem jak by ktoś mógł pomóc lub nakierować mnie na jakiś błąd. Oto cały program:
#include <iostream>
using namespace std;
int t,n,a,l,*tab;
void quicksort(int lewy, int prawy)
{
int i,j,piwot;
i = (lewy + prawy) / 2;
piwot = tab[i];
tab[i] = tab[prawy];
for(j = i = lewy; i < prawy; i++)
if(tab[i] < piwot)
{
swap(tab[i], tab[j]);
j++;
}
tab[prawy] = tab[j];
tab[j] = piwot;
if(lewy < j - 1)
quicksort(lewy, j - 1);
if(j + 1 < prawy)
quicksort(j + 1, prawy);
}
int main()
{
cin>>t;
for(int i = 0; i<t; i++)
{
cin>>n;
tab = new int [n];
for(int j = 0; j<n; j++)
{
cin>>tab[j];
}
quicksort(0,n-1);
if(n>2)
{
cout<<tab[n-1]<<" ";
if(tab[n-2]==tab[n-1])
{
cout<<tab[n-2]<<" ";
a++;
if(tab[n-3]==tab[n-2])
{
cout<<tab[n-3]<<" ";
a++;
for(int u = n-4;u>1;--u)
{
if(tab[u]==tab[u+1])
{
cout<<tab[u]<<" ";
a++;
}
else continue;
}
}
}
cout<<tab[0]<<" ";
for(int k = 1; k<n-a-1; k++)
{
cout<<tab[k]<<" ";
l++;
}
cout<<endl;
l=0;
a=0;
}
else
{
if(n==2)
{
if(tab[n-1]>=tab[n-2])
{
cout<<tab[n-1]<<" "<<tab[n-2]<<endl;
}
else if(tab[n-1]<tab[n-2])
{
cout<<tab[n-2]<<" "<<tab[n-1]<<endl;
}
}
else if(n==1)
{
cout<<tab[n-1]<<endl;
}
else if(n<=0)
{
cout<<"0"<<endl;
}
}
}
delete [] tab;
return 0;
}