1860 - BlackFriday

From Bitnami MediaWiki
Revision as of 14:56, 23 March 2023 by Csatari Mălina (talk | contribs) (Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/1860/blackfriday 1860 - BlackFriday] ---- == Cerinţa == Anul acesta unele magazine din România s-au hotărât să organizeze BlackFriday joia, altele de luni până joi, iar altele sâmbătă şi duminică. Ele au afişat '''n''' preţuri înainte de ieftinire şi cele n preţuri după ieftinire. Aflaţi ce produs s-a ieftinit cu cel mai mare procent. == Date de intrare == Fișierul de intrare '''blackfriday.in''' conține pe prima lin...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursa: 1860 - BlackFriday


Cerinţa

Anul acesta unele magazine din România s-au hotărât să organizeze BlackFriday joia, altele de luni până joi, iar altele sâmbătă şi duminică. Ele au afişat n preţuri înainte de ieftinire şi cele n preţuri după ieftinire. Aflaţi ce produs s-a ieftinit cu cel mai mare procent.

Date de intrare

Fișierul de intrare blackfriday.in conține pe prima linie numărul n, pe a doua linie n numere naturale separate prin spații reprezentând preţurile înainte de ieftinire, iar pe a treia linie n numere naturale separate prin spații reprezentând preţurile corespunzătoare după ieftinire.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele din fișier sunt introduse corect.", apoi în fișierul blackfriday.out se va afișa pe prima linie numărul k, reprezentând numărul de ordine din şirul de preţuri dat al produsului care s-a ieftinit cu cel mai mare procent. În cazul în care datele din fișier nu respectă restricțiile, se va afișa pe ecran: "Datele din fișier nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • 2 ⩽ n ⩽ 10
  • elementele vectorului vor fi cuprinse între 1 și 1.000.000.000
  • dacă sunt mai multe preţuri care s-au ieftinit cu acelaşi procent se va afişa numărul de ordine mai mic
  • preţurile după ieftinire sunt strict mai mici decât cele anterioare(evident).

Exemplu:

Exemple

Exemplul 1

blackfriday.in
3
8 15 200
4 6 160
Ecran
Datele din fișier sunt introduse corect.
blackfriday.out
2

Exemplul 2

Intrare
4
8 15 200 12
4 6 160 16
Ecran
Datele din fișier nu corespund restricțiilor impuse.
blackfriday.out


Rezolvare

<syntaxhighlight lang="python" line>

  1. 1860

def citire_conform_restrictiilor():

   with open("blackfriday.in") as f:
       n = int(f.readline())
       pret_initial = list(map(int, f.readline().split()))
       pret_redus = list(map(int, f.readline().split()))
   if n < 2 or n > 10:
       print("Datele nu corespund restricțiilor impuse.")
       exit()
   for elem in pret_initial:
       if elem < 1 or elem > 1000000000:
           print("Datele din fișier nu corespund restricțiilor impuse.")
           exit()
   for elem in pret_redus:
       if elem < 1 or elem > 1000000000:
           print("Datele din fișier nu corespund restricțiilor impuse.")
           exit()
   for i in range(n):
       if(pret_initial[i] < pret_redus[i]):
           print("Datele din fișier nu corespund restricțiilor impuse.")
           exit()
   print("Datele din fișier sunt introduse corect.")
   return n, pret_initial, pret_redus


def afis_produsului_cu_reducerea_cea_mai_mare_in_blackfridayout(n, pret_initial, pret_redus):

   max_reducere = -1
   k = -1
   for i in range(n):
       reducere = (pret_initial[i] - pret_redus[i]) / pret_initial[i]
       if reducere > max_reducere:
           max_reducere = reducere
           k = i + 1
   with open("blackfriday.out", "w") as f:
       f.write(str(k))


if __name__ == '__main__':

   n, pret_initial, pret_redus = citire_conform_restrictiilor()
   afis_produsului_cu_reducerea_cea_mai_mare_in_blackfridayout(n, pret_initial, pret_redus)







</syntaxhighlight>