Rezolvare completă PbInfo #2192 Talent

Românii au talent! Atraşi de marele premiu oferit de organizatorii concursului Românii au talent, la preselecţia organizată la Piatra Neamţ au venit foarte mulţi români să demonstreze că au talent.

La înscriere, fiecare participant a primit câte un număr de concurs, reprezentat de un număr natural nenul. Unii dintre participanţi pot avea statut special, fiind admişi direct în semifinale, ca urmare a rezultatelor deosebite obţinute la ediţiile anterioare, numărul de concurs primit de aceştia având proprietatea că toate cifrele lui pot fi aranjate astfel încăt să formeze un număr palindrom.

Printre numerele de concurs primite de participanţii cu statut special, există numere care au în scrierea lor zecimală un număr maxim de cifre distincte. Cel mai mic dintre aceste numere reprezintă numărul de concurs al participantului VIP.

Cerinta

Scrieţi un program care citeşte numărul natural n (reprezentând numărul de participanţi înscrişi la concurs), n numere naturale (reprezentând numerele de concurs ale celor n participanţi) şi determină:

a) numărul x de participanţi admişi direct în semifinale;
b) numărul y de concurs al participantului VIP, dacă există un astfel de participant printre cei înscrişi.

Date de intrare

Fişierul talent.in conţine pe prima linie numărul n de participanţi, iar pe fiecare dintre următoarele n linii câte un număr natural reprezentând numărul de concurs al unui participant.

Date de ieșire

Fişierul talent.out va conţine pe prima linie cele două valori x şi y, separate printr-un singur spaţiu, în această ordine. Dacă nu există participanţi admişi direct în semifinală, atunci prima linie a fişierului va conţine două valori nule, separate printr-un singur spaţiu: 0 0.

Restricții și precizări

0 <n ≤ 15000
• numerele de concurs sunt distincte două câte două şi sunt mai mici sau egale cu 2000000000
• un număr palindrom este un număr natural care este egal cu numărul natural obţinut prin scrierea în ordine inversă a cifrelor lui (de exemplu, numărul 12021 este un număr palindrom)
• pentru rezolvarea corectă a primei cerinţe se acordă 50% din punctaj, iar pentru rezolvarea corectă a celei de a doua cerinţe se acordă 50% din punctaj.


Exemplu

talent.in

8
17864
9900
90321
4704
351
83181
46476
7432

talent.out

3 46476

Explicație

Sunt 3 participanţi calificaţi direct în semifinală. Numerele lor de concurs sunt numere ale căror cifre pot fi aranjate astfel încât să formeze un palindrom : 9900(format din 2 cifre distincte), 83181 (format din 3 cifre distincte) şi 46476 (format din 3 cifre distincte). Dintre acestea, cel mai mic număr format dintr-un număr maxim de cifre distincte este 46476 reprezentând numărul de concurs al participantului VIP.

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 Talent:

#include <fstream>

using namespace std;

ifstream f("talent.in");

ofstream g("talent.out");

long x,vip,p,c[10],n,maxd,d;

int pali(long x)
{
    int i,k=0,nen=0;
    d=0;
    for(i=0; i<=9; i++) c[i]=0;
    while(x) c[x%10]++,nen+=(x%10!=0),x=x/10;
    for(i=0; i<=9; i++)
    {
        k+=(c[i]%2!=0);
        d+=(c[i]!=0);
    }
    if(nen==1 && c[0]!=0) return 0;
    return (k<2);
}
int main()
{
    f>>n;
    while(n--)
    {
        f>>x;
        if(pali(x))
        {
            p++;
            if(!vip || maxd<d || maxd==d && x<vip)vip=x,maxd=d;
        }
    }
    g<<p<<' '<<vip<<'\n';

    f.close();
    g.close();
    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 #2192 Talent

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2192 Talent 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!