Rezolvare completă PbInfo #527 Preturi1

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

Exemplu

Intrare

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

Ieșire

96

Explicație

La magazinul 1 produsele costă 96, la magazinul 3 produsele costă 109, iar din magazinul 2 nu se poate cumpăra produsul 1.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Preturi1:

#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;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #527 Preturi1

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #527 Preturi1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!