Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
2279 - Concurs Perf
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Cerința== Chef vrea să organizeze un concurs. Previziunea nivelurilor de dificultate a problemelor poate fi o sarcină descurajantă. Chef vrea să echilibreze nivelurile de dificultate ale problemelor. Să presupunem că un concurs a avut <span style=“color: red”> P</span> participanți în total. <span style=“color: red”> O</span> problemă care a fost rezolvată de cel puțin jumătate dintre participanți (adică <span style=“color: red”> P/2</span>) este considerată ușoară. <span style=“color: red”> O</span> problemă rezolvată de participanții de cel mult <span style=“color: red”> P/10</span> este considerată dificilă. Chef vrea echilibru. Potrivit lui, un concurs echilibrat trebuie să aibă exact <span style=“color: red”> 1</span> problemă ușoară și exact <span style=“color: red”> 2</span> probleme grele. Vi se oferă descrierea problemelor <span style=“color: red”> N</span> și numărul de participanți care rezolvă aceste probleme. Puteți spune dacă concursul a fost echilibrat sau nu? ==Date de intrare== Primul rând conține un număr întreg <span style=“color: red”> T</span> care indică numărul de cazuri de testare. Prima linie a fiecărui caz de testat conține două numere întregi <span style=“color: red”> N</span> și <span style=“color: red”> P</span> indicând numărul de probleme, respectiv numărul de participanți. Cea de-a doua linie conține <span style=“color: red”> N</span> numere întregi, separate prin spațiu, al căror număr indică numărul de participanți care rezolvă problema cu numărul de ordine <span style=“color: red”> i</span>. ==Date de ieșire== Pentru fiecare caz, afișati da, dacă concursul este echilibrat, sau nu. ==Restricții și precizări== <span style=“color: red”> 1 ≤ T, N ≤ 500 1 ≤ P ≤ 10^8^ 1 ≤ numărul de participanți care rezolvă o problemă ≤ P</span> ==Exemplu:== Intrare 6 3 100 10 1 100 3 100 11 1 100 3 100 10 1 10 3 100 10 1 50 4 100 50 50 50 50 4 100 1 1 1 1 Ieșire da nu nu da nu nu ==Rezolvare== <syntaxhighlight lang="python" line> def validare(num_teste, nr_probleme, punctaj_maxim, probleme): if num_teste <= 0 or nr_probleme <= 0 or punctaj_maxim <= 0: return False if len(probleme) != nr_probleme: return False if not all(1 <= x <= punctaj_maxim for x in probleme): return False return True def citeste_input(): num_teste = int(input()) test_cases = [] for i in range(num_teste): nr_probleme, punctaj_maxim = map(int, input().split()) probleme = list(map(int, input().split())) if not validare(i+1, nr_probleme, punctaj_maxim, probleme): return None test_cases.append((nr_probleme, punctaj_maxim, probleme)) return test_cases def este_balansata(nr_probleme, punctaj_maxim, probleme): usor = 0 greu = 0 for i in range(nr_probleme): if probleme[i] > punctaj_maxim // 2: usor += 1 elif probleme[i] <= punctaj_maxim // 10: greu += 1 return usor == 1 and greu == 2 if __name__ == '__main__': teste = citeste_input() if teste is None: print("Input invalid") for test in teste: nr_probleme, punctaj_maxim, probleme = test if este_balansata(nr_probleme, punctaj_maxim, probleme): print("da") else: print("nu") </syntaxhighlight> ==Explicatie cod:== validare(num_teste, nr_probleme, punctaj_maxim, probleme): Această funcție primește ca parametri numărul de teste (num_teste), numărul de probleme (nr_probleme), punctajul maxim (punctaj_maxim) și o listă de punctaje pentru fiecare problemă (probleme). Scopul funcției este de a valida datele de intrare pentru un set de teste. Verificările includ asigurarea că numărul de teste, numărul de probleme și punctajul maxim sunt mai mari decât zero și că lungimea listei probleme este egală cu numărul de probleme. De asemenea, se verifică ca fiecare punctaj să fie cuprins între 1 și punctajul maxim inclusiv. Funcția returnează True dacă datele de intrare sunt valide și False în caz contrar. citeste_input(): Această funcție nu primește niciun argument. Scopul ei este să citească datele de intrare și să construiască o listă de teste. Întâi se citește numărul total de teste (num_teste). Apoi, pentru fiecare test, se citește numărul de probleme (nr_probleme), punctajul maxim (punctaj_maxim) și lista de punctaje pentru fiecare problemă (probleme). După fiecare citire, se validează datele apelând funcția validare() și se verifică dacă rezultatul validării este False. Dacă datele de intrare sunt invalide, funcția returnează None. În caz contrar, se adaugă un tuplu format din numărul de probleme, punctajul maxim și lista de punctaje în lista test_cases. La final, funcția returnează lista de teste test_cases. este_balansata(nr_probleme, punctaj_maxim, probleme): Această funcție primește numărul de probleme (nr_probleme), punctajul maxim (punctaj_maxim) și lista de punctaje pentru fiecare problemă (probleme) pentru un test specific. Scopul funcției este de a determina dacă distribuția punctajelor este echilibrată în funcție de cerințele urmărite. Se parcurge lista de punctaje și se numără de câte ori un punctaj este mai mare decât jumătate din punctajul maxim (usor) și de câte ori este mai mic sau egal cu un zecime din punctajul maxim (greu). Funcția returnează True dacă există exact o problemă ușoară (cu punctaj mai mare decât jumătate din punctajul maxim) și exact două probleme grele (cu punctaj mai mic sau egal cu un zecime din punctajul maxim). În caz contrar, funcția returnează False.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width