0578 - SecvEgale2

From Bitnami MediaWiki
Revision as of 19:56, 17 April 2023 by Flaviu (talk | contribs)

Sursa: 0578 - SecvEgale2


Cerinţa

Se dă un vector cu n elemente, numere naturale. Determinați câte secvențe ale vectorului au toate elementele egale.

Date de intrare

Programul citește de la tastatură numărul n, apoi cele n elemente ale vectorului.

Date de ieșire

Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.

Restricţii şi precizări

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

Exemplu

Intrare
5
4 3 3 3 5
Ieșire
8

Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line>

  1. 0578 - SecvEgale2

def read_input():

   n = int(input())
   v = list(map(int, input().split()))
   return v

def count_equal_sequences(v):

   cnt = 0
   last = None
   seq_len = 0
   
   for i in range(len(v)):
       if v[i] != last:
           if seq_len >= 2:
               cnt += 1
           seq_len = 1
           last = v[i]
       else:
           seq_len += 1
           
   if seq_len >= 2:
       cnt += 1
       
   return cnt

def validate_output(expected, actual):

   return expected == actual

if __name__ == '__main__':

   v = read_input()
   result = count_equal_sequences(v)
   expected = int(input())
   if validate_output(expected, result):
       print("Corect")
   else:
       print("Incorect")


</syntaxhighlight>