fbpx

Problema #526 – Preturi – Rezolvari PBInfo

de Mihai-Alexandru

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ă poate cumpăra orice produs din orice 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

Exemplu

Intrare

5
4 4 5 1 2
3
 5 8 6 -1 6
-1 4 8  9 5
 6 6 8  3 9

Ieșire

79

Explicație

Din magazinul 1 se cumpără produsele 1 3; din magazinul 2 se cumpără produsele 2 5, iar din magazinul 3 se cumpără produsul 4.
În total se plătesc 4 * 5 + 4 * 4 + 5 * 6 + 1 * 3 + 2 * 5 = 79.

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n , a[101][101] , v[101] , m , s = 0;
    cin >> n;
    for(int i = 0 ; i < n ; ++i) cin >> v[i];
    cin >> m;
    for(int i = 0 ; i < m ; ++i)
        for(int j = 0 ; j < n ; ++j)
            cin >> a[i][j];
    for(int i = 0 ; i < n ; ++i)
    {
        int mini = 1001;
        for(int j = 0 ; j < m ; ++j)
        {
            if(a[j][i] < mini && a[j][i] != -1)
            mini=a[j][i];
        }
        s += v[i] * mini;
    }
    cout << s;
    return 0;
}
Comentarii

S-ar putea sa iti placa