Witam, nie dawno zaczełam uczyć się programowania z kursem main2 i mam mały problem z zadaniem dwa markety. Przechodzi mi tylko część testów. Czy wie ktoś może gdzie popełniam błąd? Z góry dziękuje i pozdrawiam
O to treść zadania i mój program:
Wstęp do programowania, lekcja 9. Dostępna pamięć: 256 MB.
Chcesz zrobić zakupy. Wiesz dokładnie, jakie produkty chcesz kupić. Sprawdziłeś już w Internecie ceny każdego
z produktów we wszystkich okolicznych marketach. Masz czas pojechać do co najwyżej dwóch marketów
i łącznie chcesz w nich kupić po jednym egzemplarzu każdego produktu. Jak to zrobić najtaniej?
Wejście
Pierwszy wiersz wejścia zawiera dwie liczby całkowite n oraz m (2 ≤ n, m ≤ 100) oddzielone spacją, oznaczające
liczbę marketów oraz liczbę produktów, które chcesz kupić. Każdy z kolejnych n wierszy zawiera po m liczb
całkowitych z zakresu od 1 do 1000. Pierwszy wiersz zawiera ceny kolejnych produktów w pierwszym markecie,
drugi – ceny kolejnych produktów w drugim markecie itd.
Wyjście
Twój program powinien wypisać jedną liczbę całkowitą: minimalny koszt zakupu wszystkich potrzebnych
produktów w co najwyżej dwóch marketach.
Przykład
Dla danych wejściowych:
3 4
7 3 7 9
2 20 10 6
8 8 8 8
poprawnym wynikiem jest:
18
Wyjaśnienie do przykładu: Najlepiej pojechać do pierwszego i drugiego marketu. W pierwszym kupujemy
drugi i trzeci produkt (koszt 3 + 7), a w drugim pierwszy i czwarty (koszt 2 + 6)
#include <iostream>
using namespace std;
void sortowanie_babelkowe(int tab[],int n)
{
for(int i=0;i<n;i++)
for(int j=1;j<n-i;j++)
if(tab[j-1]>tab[j])
swap(tab[j-1], tab[j]);
}
void dod_tab(int sum[],int tab[101][101],int m,int k,int p)
{
for(int i=0;i<m;i++)
{
sum[i]=tab[k][i];
}
int i=0;
for(int j=m;j<(m*2);j++)
{
sum[j]=tab[p][i];
i++;
}
}
int main() {
int n,m;
cin>>n>>m;
int tab[101][101];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>tab[i][j];
}
}
int s[202]={0};
int wyn1=0, wyn2=1000000;
for(int i=0;i<n;i++)
{
for(int j=(i+1);j<n;j++)
{ dod_tab(s,tab,m,i,j);
sortowanie_babelkowe(s,(m*2));
for(int e=0;e<m;e++)
{
wyn1=wyn1+s[e];
}
if(wyn1<wyn2 )
{
wyn2=wyn1;
}
wyn1=0;
}
}
cout<<wyn2;
return 0;
}