Κλιμακωτές χρεώσεις σε πίνακα

Ένα ταξιδιωτικό γραφείο ζήτησε προσφορές από 5 αεροπορικές εταιρίες για μαζική αγορά εισιτηρίων για το δρομολόγιο Θεσσαλονίκη – Βαρκελώνη. Όλες οι αεροπορικές εταιρίες έστειλαν την προσφορά τους, με κλιμακωτές χρεώσεις ανάλογα με τον αριθμό των επιβατών. Η 1η κλίμακα είναι από 1 – 20 επιβάτες, η δεύτερη από 21 – 50 και η τελευταία είναι άνω των 51 επιβατών. Ένα παράδειγμα της προσφοράς (με τυχαίους αριθμούς) φαίνεται πιο κάτω:

  1 - 20 επιβάτες 21 - 50 επιβάτες άνω των 51 επιβατών
Kissavos Air 210€ 190€ 180€
Ionian Airlines 220€ 175€ 140€
Galaxy Airlines 200€ 185€ 180€
Easy Flirt 199€ 189€ 179€
Brian Air 205€ 186€ 175€

Να γίνει αλγόριθμος που με δεδομένο τον πίνακα ΧΡΕΩΣΕΙΣ[5,3] που περιέχει τις κλιμακωτές χρεώσεις κάθε αεροπορικής εταιρίας και του πίνακα ΟΝ με τα ονόματα των αεροπορικών εταιριών, να διαβάζει τον αριθμό των επιβατών που το ταξιδιωτικό γραφείο διαθέτει και να τυπώνει το όνομα της αεροπορικής με την πιο συμφέρουσα (πιο φθηνή) προσφορά. Υποθέστε πως υπάρχει μόνο μία προσφορά η οποία είναι η φθηνότερη.

Λύση
Γνωρίζουμε πως έχουμε 5 προσφορές, κάθε μία από τις οποίες βρίσκεται σε μία γραμμή του πίνακα χρεώσεις. Άρα, επαναληπτικά θα υπολογίζουμε κλιμακωτά την χρέωση για κάθε γραμμή, και στην συνέχεια θα βρίσκουμε την ελάχιστη τιμή. Υποθέστε πως υπάρχει μόνο μία προσφορά η οποία είναι η φθηνότερη.

Αλγόριθμος Πτήσεις
   Δεδομένα //ΧΡΕΩΣΕΙΣ, ΟΝ//
 
   Διάβασε αρ_επιβατών
   Για i από 1 μέχρι 5
      Αν αρ_επιβατών <= 20 τότε
         χρε_εταιρείας <- ΧΡΕΩΣΕΙΣ[i, 1] * αρ_επιβατών
      Αλλιώς_αν αρ_επιβατών <= 50 τότε
         χρε_εταιρείας <- ΧΡΕΩΣΕΙΣ[i, 1] * 20 + ΧΡΕΩΣΕΙΣ[i, 2] * (αρ_επιβατών - 20)
      Αλλιώς
         χρε_εταιρείας <- ΧΡΕΩΣΕΙΣ[i, 1] * 20 + ΧΡΕΩΣΕΙΣ[i, 2] * 30 + ΧΡΕΩΣΕΙΣ[i, 3] * (αρ_επιβατών - 50)
      Τέλος_αν
      ΤΕΛΙΚΗ_ΧΡΕΩΣΗ[i] <- χρε_εταιρείας
   Τέλος_επανάληψης
 
   min <- 1
   Για i από 2 μέχρι 5
      Αν ΤΕΛΙΚΗ_ΧΡΕΩΣΗ[i] < ΤΕΛΙΚΗ_ΧΡΕΩΣΗ[min] τότε
         min <- i
      Τέλος_αν
   Τέλος_επανάληψης
 
   Εμφάνισε ΟΝ[min]
Τέλος Πτήσεις