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âten
numere, șiruli
conținând în ordine prețurile celorn
produse la magazinuli
. 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; }