fbpx

Problema #3403 – Produse – Rezolvari PBInfo

de Mihai-Alexandru

Î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.

Î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.

Exemplul 2

produse.in

2 5
15123 24897 4217 142 2736

produse.out

1 142 15123
2 2736 24897
4 4217
#include <bits/stdc++.h>

using namespace std;

ifstream cin("produse.in");
ofstream cout("produse.out");

int n, m, cer, a[1001];

bool epuizat(int n){
    while(n > 99)
        n/=10;
    return (n % 10) % 2 == 1;
}

int pc(int n){
    while(n>9)
        n/=10;
    return n;
}

int main(){
    cin >> cer >> n;
    for(int i = 1; i <= n; ++i)
        cin >> a[i];
    if(cer == 1){
        int cnt1 = 0, cnt2 = 0;
        for(int i = 1; i <= n; ++i)
            if(epuizat(a[i]))
                cnt1++;
            else
                cnt2++;
        cout << cnt2 << ' ' << cnt1 << ' ';
    }
    else{
        sort(a + 1, a + n + 1);
        for(int i = 1; i <= 9; ++i){
            bool ok = false;
            for(int j = 1; j <= n; ++j)
                if(pc(a[j]) == i)
                    ok = true;
            if(ok){
                cout << i << ' ';
                for(int j = 1; j <= n; ++j)
                    if(pc(a[j]) == i)
                        cout << a[j] << ' ';
                cout << endl;
            }
        }
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa