Rezolvare completă PbInfo #606 Culori

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 culori.in 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 culori.out 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
  • culorile vagoanelor sunt identificate prin numere naturale mai mici decât 1.000.000.000

Exemplul 1:

culori.in

5
2 2 1 6 6

culori.out

3
DA

Exemplul 2:

culori.in

5
2 2 6 2 6

culori.out

2
NU

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Culori:

#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("culori.in");
ofstream fout("culori.out");

int n , v[1005], c[1005], nrc;

int main()
{
    fin >> n ; 
    for(int i = 1 ;i <= n ; ++i)
        fin >> v[i];
    nrc = 1, c[1] = v[1];
    bool frumos = true;
    for(int i = 2 ; i <= n ; ++i)
        if(v[i] != v[i-1])
        {
            int poz = 0;
            for(int j = 1 ; j <= nrc && !poz ; j ++)
                if(c[j] == v[i])
                    poz = j;
            if(poz == 0)
                c[++nrc] = v[i];
            else
                frumos = false;
        }
    fout << nrc << "
";
    if(frumos)
        fout << "DA";
    else
        fout << "NU";
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #606 Culori

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #606 Culori de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!