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
1048 - Schi
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!
La proba de sărituri cu schiurile din cadrul jocurilor olimpice de iarnă participă <code>N</code> concurenți, numerotați cu numere de la <code>1</code> la <code>N</code>. Regulile de desfășurare a probei sunt următoarele: * concurenții evoluează pe rând, în ordine de la <code>1</code> la <code>N</code>; * fiecare concurent va efectua o singură săritură; * după efectuarea săriturii fiecare concurent primește un anumit punctaj; * pe tot parcursul concursului, comisia de arbitri are obligația să alcătuiască o listă cu punctajele obținute de concurenți, în ordinea evoluției lor; * evoluția unui concurent durează exact un minut; * nu se face pauză între evoluțiile a doi concurenți care au numere de ordine consecutive; * afișarea punctajului nu necesită timp suplimentar după efectuarea săriturii; * proba se încheie la un minut după evoluția ultimului concurent. Pe tot parcursul concursului se ține în mod neoficial și un clasament parțial, pe baza rezultatelor obținute de concurenții care au evoluat până în acel moment. Asta pentru că șeful comisiei de arbitri are o curiozitate aparte și pune <code>K</code> întrebări sub forma următoare: ''Câte minute s-a ocupat primul loc din clasament cu un punctaj egal cu <code>X</code> puncte?'' Dacă nici un concurent nu s-a clasat pe primul loc cu <code>X</code> puncte atunci primește ca răspuns valoarea <code>0</code>. = Cerința = Scrieți un program care determină răspunsul pentru fiecare dintre cele <code>K</code> întrebări puse de șeful comisiei de arbitri. = Date de intrare = Fișierul de intrare <code>schi.in</code> conține pe prima linie un număr natural, <code>N</code> reprezentând numărul de concurenți. Pe a doua linie a fișierului sunt scrise cele <code>N</code> numere naturale separate prin câte un spațiu, reprezentând punctajele obținute de fiecare dintre cei <code>N</code> concurenți, în ordinea în care aceștia au evoluat. Pe a treia linie a fișierului este scris numărul natural <code>K</code> ce reprezintă numărul de întrebări puse de șef. Pe a patra linie a fișierului sunt scrise <code>K</code> numere naturale separate prin câte un spațiu, reprezentând valorile <code>X</code> ale punctajelor alese de șeful comisiei de arbitri. = Date de ieșire = Fișierul de ieșire <code>schi.out</code> va conține pe prima linie <code>K</code> numere, separate prin câte un spațiu, reprezentând, în ordine, răspunsurile la cele <code>K</code> întrebări. = Restricții și precizări = * <code>1 ≤ N ≤ 100 000</code> * <code>1 ≤ K ≤ 100 000</code> * <code>0 ≤</code> punctajele obținute de concurenți <code>≤ 1 000 000 000</code> * <code>0 ≤</code> valorile <code>X</code> alese de șeful arbitrilor <code>≤ 1 000 000 000</code> = Exemplu: = <code>schi.in</code> 10 1 6 5 3 6 8 8 6 1 9 6 5 1 6 8 2 9 <code>schi.out</code> 0 1 4 4 0 1 = Explicație = Cu punctajul <code>5</code> nu s-a ocupat niciodată locul <code>1</code>, cu punctajul <code>1</code> s-a ocupat primul loc un singur minut, cu punctajele <code>6</code> și <code>8</code> s-a ocupat locul <code>1</code> câte <code>4</code> minute. Cu punctajul <code>2</code> nu s-a ocupat locul <code>1</code>. El nici nu a fost obținut de vreun concurent. Cu punctajul <code>9</code> s-a ocupat locul <code>1</code> un minut. == Încărcare soluție == === Lipește codul aici === <syntaxhighlight lang="python" line="1"> import sys DIM = 100010 v = [0] * DIM n = 0 i = 0 T = 0 st = 0 dr = 0 x = 0 q = 0 maxim = 0 def cautMinim(x): p = 1 u = n mid = 0 while p <= u: mid = (p + u) // 2 if x <= v[mid]: u = mid - 1 else: p = mid + 1 if v[p] == x: return p else: return -1 def cautMaxim(x): p = 1 u = n mid = 0 while p <= u: mid = (p + u) // 2 if x >= v[mid]: p = mid + 1 else: u = mid - 1 if v[u] == x: return u else: return -1 if __name__ == "__main__": fin = open("schi.intxt", "r") fout = open("schi.outtxt", "w") n = int(fin.readline()) maxim = -1 for i in range(1, n+1): x = int(fin.readline()) if x > maxim: maxim = x v[i] = maxim q = int(fin.readline()) for i in range(1, q+1): x = int(fin.readline()) st = cautMinim(x) if st == -1: fout.write("0 ") else: dr = cautMaxim(x) fout.write(str(dr - st + 1) + " ") fin.close() fout.close() </syntaxhighlight>
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