3403 - Produse

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

În baza de date a unui magazin online există n produse. Fiecare are un cod numeric, alcătuit din cel mult nouă cifre, cu următoarea semnificație:

  • prima cifră reprezintă categoria produsului;
  • a doua cifră reprezintă starea produsului – pară pentru produsele existente pe stoc și impară pentru cele cu stoc epuizat;
  • restul cifrelor din cod reprezintă identificatorul produsului.

Cerința

Se dau cele n coduri ale produselor din baza de date.

1) Determinați câte produse există pe stoc și câte au stoc epuizat.

2) Pentru fiecare categorie, determinați lista produselor, în ordinea crescătoare a codurilor numerice.

Date de intrare

Fișierul de intrare produse.in conține pe prima linie numerele c n, iar pe a doua linie n numere naturale, separate prin spații, reprezentând codurile produselor.

Date de ieșire

Dacă c=1, fișierul de ieșire produse.out va conține pe prima linie numerele S E, separate printr-un un spațiu, reprezentând numărul de produse existente pe stoc, respectiv numărul de produse cu stoc epuizat.

Dacă c=2, fișierul de ieșire produse.out va conține mai multe linii, câte una pentru fiecare categorie de produs, în ordinea crescătoare a acestora. Fiecare linie începe cu categoria, urmată de un spațiu, apoi de codurile produselor din acea categorie, în ordine crescătoare, separate și ele prin câte un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 1000;
  • cele n coduri vor fi mai mari decât 99 și mai mici decât 1.000.000.000;
  • pentru 30% din teste, c=1

Exemplul 1

produse.in

1 5
15123 24897 4217 142 2736

produse.out

3 2

Explicație

Produsele existente pe stoc au codurile 24897 4217 142, iar cele cu stoc epuizat au codurile 15123 2736.

Încărcare soluție

Lipește codul aici

n, m, cer, a = 0, 0, 0, [0]*1001

def epuizat(n):

    while n > 99:

        n /= 10

    return (n % 10) % 2 == 1

def pc(n):

    while n > 9:

        n /= 10

    return n

cer, n = map(int, input().split())

for i in range(1, n+1):

    a[i] = int(input())

if cer == 1:

    cnt1 = 0

    cnt2 = 0

    for i in range(1, n+1):

        if epuizat(a[i]):

            cnt1 += 1

        else:

            cnt2 += 1

    print(cnt2, cnt1, end=' ')

else:

    a = sorted(a[1:n+1])

    for i in range(1, 10):

        ok = False

        for j in range(1, n+1):

            if pc(a[j]) == i:

                ok = True

        if ok:

            print(i, end=' ')

            for j in range(1, n+1):

                if pc(a[j]) == i:

                    print(a[j], end=' ')

            print()