👤

Cerința
Gigel trebuie să cumpere n produse, pentru fiecare produs cunoscându-se cantitate necesară. În oraș sunt m magazine, în fiecare magazin găsindu-se produsele dorite la anumite prețuri. Determinați suma totală minimă necesară pentru a cumpăra produsele dorite, știind că Gigel trebuie să cumpere toate produsele din același magazin.

Date de intrare
Programul citește de la tastatură, în ordine:

numărul de produse n
n numere naturale, reprezentând cantitățile necesare din fiecare produs
numărul de magazine m
m șiruri de câte n numere, șirul i conținând în ordine prețurile celor n produse la magazinul i. Dacă la un magazin nu există un anumit produs, valoarea prețului va fi -1
Date de ieșire
Programul va afișa pe ecran numărul S, reprezentând suma minimă determinată.

Restricții și precizări
1 ≤ n , m ≤ 100
cantitățile necesare sunt numere naturale nenule mai mici sau egale cu 1000
prețurile produselor sunt numere naturale nenule mai mici sau egale cu 1000, sau -1, cu semnificația de mai sus
trebuie cumpărate toate produsele, din același magazin


Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int v[105], a[105][105], n ,m;

int main(){

cin  >> n;  

for(int i = 1 ; i <= n ;  ++i)

 cin >> v[i];

cin >> m;

for(int i = 1 ; i <= m ; ++i)

 for(int j = 1 ; j <= n ; ++j)

  cin >> a[i][j];

int smin = 1000 * 1000 * 100 + 5;

for(int  i = 1 ; i <= m ; ++i)

{

 bool ok = true;

 for(int j = 1 ; j <= n ; ++j)

  if(a[i][j] == -1)

   ok = false;

 if(ok)

 {

  int s = 0;

  for(int j =1 ; j <= n ; ++j)

   s += a[i][j] * v[j];

  if(s < smin)

   smin = s;

 }

}

cout << smin;

return 0;

}

Explicație: