0606 - Culori

From Bitnami MediaWiki

Cerința[edit | edit source]

Gigel a primit de la bunicul său un trenuleț electric cu n vagoane colorate în diverse culori, identificate prin numere întregi. Gigel consideră că trenul este frumos colorat dacă toate vagoanele colorate la fel sunt învecinate. Acum vă roagă să-i spuneți cu câte culori diferite au fost colorate vagoanele și dacă trenul este frumos colorat.

Date de intrare[edit | edit source]

Fișierul de intrare input.txt conține pe prima linie numărul n, iar pe a doua linie n numere naturale nenule, reprezentând în ordine culorile vagoanelor din care este compus trenulețul.

Date de ieșire[edit | edit source]

Fișierul de ieșire output.txt va conține pe prima linie numărul C de culori diferite, iar pe a doua linie mesajul DA sau NU, după cum trenul este sau nu frumos colorat.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000

Exemplul 1[edit | edit source]

input.txt:

5

2 2 1 6 6

output.txt:

3

DA

Exemplul 2[edit | edit source]

input.txt:

5

2 2 6 2 6

output.txt:

2

NU

Exemplul 3[edit | edit source]

input.txt:

9999999999

1 2 3

Output:

Constrangeri neindeplinite

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def ver(n):

   if not(1<=n<=1000):
       print("Constrangeri neindeplinite")
       exit()

with open("input.txt", 'r') as fin, open("output.txt", 'w') as fout:

   n = int(fin.readline())
   ver(n)
   v = list(map(int, fin.readline().split()))
   c = [0] * 1005
   nrc = 1
   c[1] = v[0]
   frumos = True
   for i in range(1, n):
       if v[i] != v[i - 1]:
           poz = 0
           for j in range(1, nrc + 1):
               if c[j] == v[i]:
                   poz = j
                   break
           if poz == 0:
               nrc += 1
               c[nrc] = v[i]
           else:
               frumos = False
   fout.write(str(nrc) + "\n")
   if frumos:
       fout.write("DA")
   else:
       fout.write("NU")

</syntaxhighlight>