3264 - Sum Min XI
Cerinţa[edit | edit source]
Se dă o matrice pătratică cu n lini şi n coloane şi elemente numere întregi. Determinaţi cea mai mică sumă a n elemente din matrice, obținută adunând câte un element de pe fiecare coloană a matricei.
Date de intrare[edit | edit source]
Fişierul de intrare summin_xiin.txt conţine pe prima linie numărul n, iar pe următoarele n linii câte n numere întregi, separate prin spaţii, reprezentând elementele matricei.
Date de ieșire[edit | edit source]
Fişierul de ieşire summin_xiout.txt va conţine pe prima linie numărul S, reprezentând suma minimă determinată.
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n⩽ 100
- elementele matricei vor avea cel mult 4 cifre
Exemplu 1[edit | edit source]
- summin_xiin.txt
4 12 16 5 4 11 14 6 7 8 2 3 17 10 9 13 15
- summin_xiout.txt
Datele de intrare corespund restrictiilor impuse 17
Exemplu 2[edit | edit source]
- summin_xiin.txt
4000 12 16 5 4 11 14 6 7 8 2 3 17 10 9 13 15
- summin_xiout.txt
Datele de intrare nu corespund restrictiilor impuse
Explicatie[edit | edit source]
17=8+2+3+4.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def suma_minima(matrice):
# Calculează suma minimă a elementelor din matrice, adunând câte un element de pe fiecare coloană.
suma = 0 for coloana in zip(*matrice): suma += min(coloana) return suma
def main():
with open('summin_xiin.txt', 'r') as fin, open('summin_xiout.txt', 'w') as fout: n = int(fin.readline().strip()) matrice = [list(map(int, linie.split())) for linie in fin.readlines()]
# Verifică dacă datele de intrare respectă restricțiile if not (1 <= n <= 100 and all(0 <= x < 10000 for linie in matrice for x in linie)): fout.write("Datele de intrare nu corespund restrictiilor impuse\n") return
fout.write("Datele de intrare corespund restrictiilor impuse\n")
suma = suma_minima(matrice) fout.write(f"{suma}\n")
if __name__ == "__main__":
main()
</syntaxhighlight>