0862 - NrSecvente: Difference between revisions

From Bitnami MediaWiki
Flaviu (talk | contribs)
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/520/secventa2 0862 - NrSecvente] ---- == Cerinţa == Se dă un vector cu n elemente, numere naturale și două numere t și k. Să se determine câte secvențe din șir au lungimea k și sunt formate din valori mai mici sau egale cu t. == Date de intrare == Programul citește de la tastatură numerele n t k, iar apoi cele n elemente ale vectorului. == Date de ieșire == Programul va afișa pe ecran valoarea cerută C. == Restricţii şi...
 
Flaviu (talk | contribs)
No edit summary
Line 22: Line 22:
# 0862 - NrSecvente
# 0862 - NrSecvente


n, t, k = map(int, input().split())
def citire_date():
arr = list(map(int, input().split()))
    n = int(input())
    x = list(map(int, input().split()))
    t, k = map(int, input().split())
    return x, t, k


count = 0
for i in range(n - k + 1):
    seq = arr[i:i+k]
    if max(seq) <= t:
        count += 1


print(count)
def numar_secvente(x, t, k):
    counter = 0
    for i in range(n-k+1):
        secventa = x[i:i+k]
        if all(e <= t for e in secventa):
            counter += 1
    return counter
 
 
def validare(expected, actual):
    if expected == actual:
        print("Corect")
    else:
        print(f"Incorect. Rezultatul corect era {expected}, dar am primit {actual}")
 
 
if __name__ == '__main__':
    x, t, k = citire_date()
    rezultat_obtinut = numar_secvente(x, t, k)
    validare(int(input()), rezultat_obtinut)
 


</syntaxhighlight>
</syntaxhighlight>
== Explicatie Rezolvare ==
În funcția citire_date, citim de la tastatură cele n elemente ale vectorului și cele două numere t și k și le returnăm sub formă de tuplu.
În funcția numar_secvente, parcurgem vectorul și, pentru fiecare poziție, verificăm dacă următoarele k elemente formează o secvență cu elemente mai mici sau egale cu t. Dacă da, incrementăm counter-ul. La final, returnăm valoarea counter-ului.
În funcția validare, verificăm dacă valoarea returnată de funcția numar_secvente corespunde cu valoarea așteptată și returnăm un mesaj corespunzător.
În if __name__ == '__main__', apelăm funcțiile în ordinea cerută de problemă.

Revision as of 19:50, 17 April 2023

Sursa: 0862 - NrSecvente


Cerinţa

Se dă un vector cu n elemente, numere naturale și două numere t și k. Să se determine câte secvențe din șir au lungimea k și sunt formate din valori mai mici sau egale cu t.

Date de intrare

Programul citește de la tastatură numerele n t k, iar apoi cele n elemente ale vectorului.

Date de ieșire

Programul va afișa pe ecran valoarea cerută C.

Restricţii şi precizări

  • 1 ≤ k ≤ n ≤ 100.000
  • t și elementele vectorului vor fi mai mici decât 1.000.000.000

Exemplu

Intrare
8 5 3
1 4 3 5 7 3 4 2
Ieșire
3

Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line>

  1. 0862 - NrSecvente

def citire_date():

   n = int(input())
   x = list(map(int, input().split()))
   t, k = map(int, input().split())
   return x, t, k


def numar_secvente(x, t, k):

   counter = 0
   for i in range(n-k+1):
       secventa = x[i:i+k]
       if all(e <= t for e in secventa):
           counter += 1
   return counter


def validare(expected, actual):

   if expected == actual:
       print("Corect")
   else:
       print(f"Incorect. Rezultatul corect era {expected}, dar am primit {actual}")


if __name__ == '__main__':

   x, t, k = citire_date()
   rezultat_obtinut = numar_secvente(x, t, k)
   validare(int(input()), rezultat_obtinut)


</syntaxhighlight>

Explicatie Rezolvare

În funcția citire_date, citim de la tastatură cele n elemente ale vectorului și cele două numere t și k și le returnăm sub formă de tuplu.

În funcția numar_secvente, parcurgem vectorul și, pentru fiecare poziție, verificăm dacă următoarele k elemente formează o secvență cu elemente mai mici sau egale cu t. Dacă da, incrementăm counter-ul. La final, returnăm valoarea counter-ului.

În funcția validare, verificăm dacă valoarea returnată de funcția numar_secvente corespunde cu valoarea așteptată și returnăm un mesaj corespunzător.

În if __name__ == '__main__', apelăm funcțiile în ordinea cerută de problemă.