Witam! Od pewnego czasu zmagam się z zadaniem http://main.edu.pl/pl/archive/oi/4/kaj
Do jego wykonania użyłem na początku sortowania bąbelkowego lecz dostałem komunikat "Program wywłaszczony" i 44 punkty. Postanowiłem przerzucić się na quicksort lecz wtedy było jeszcze gorzej "Program wywłaszsczony" i 0 punktów. W czym jest problem? Nie mam za bardzo pomysłu.
Ktoś już zasugerował mi abym użył funkcji sort z biblioteki algorithm, lecz zastosowanie jej wymaga wiedzy, której nie posiadam, więc póki co chciałbym to wyminąć jeśli to możliwe.
Dołączam mój kod źródłowy. Z góry dziękuję za pomoc. :)
#include <iostream>
using namespace std;
int wagamax, ilosc, licznik=0;
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()
{
cin>>wagamax>>ilosc;
int *waga;
waga= new int [ilosc];
for(int i=0; i<=ilosc-1; i++)
{
cin>>waga[i];
}
quicksort(waga, 0, ilosc-1);
for(int i=0; i<=ilosc-1; i++)
{
cout<<waga[i]<<endl;
}
int j=0;
for(int i=ilosc-1; i>=0; i--)
{
if(waga[j]!=0 && waga[i]!=0)licznik++;
if(waga[i]+waga[j]<=wagamax)
{
waga[j]=0;
j++;
}
waga[i]=0;
}
delete [] waga;
cout<<licznik;
return 0;
}