0606 - Culori

De la Universitas MediaWiki

Cerința

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

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

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

  • 1 ≤ n ≤ 1000

Exemplul 1

input.txt:

5

2 2 1 6 6

output.txt:

3

DA

Exemplul 2

input.txt:

5

2 2 6 2 6

output.txt:

2

NU

Exemplul 3

input.txt:

9999999999

1 2 3

Output:

Constrangeri neindeplinite

Rezolvare

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")