Rezolvare completă PbInfo #3403 Produse

Î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

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

#include <fstream>
#include <iostream>
#include <cmath>

using namespace std;

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

int n , V[1001], P[1001] , c, F[10];

int main()
{
    fin >> c >> n;
    for(int i =1 ; i <= n ; i ++)
        fin >> V[i];
    if(c == 1)
    {
        int S = 0, E = 0;
        for(int i = 1 ; i <= n ; i ++)
        {
            int x = V[i];
            while(x > 99)
                x /= 10;
            if(x % 2 == 0)
                S ++;
            else
                E ++;
        }
        fout << S << " " << E << "
";
    }
    else
    {
        for(int i = 1 ; i <= n ; i ++)
        {
            int x = V[i];
            while(x > 9)
                x /= 10;
            F[x] ++;
            P[i] = x;
        }
        for(int i = 1 ; i < n ; i ++)
            for(int j = i + 1 ; j <= n ; j ++)
                if(P[i] > P[j])
                {
                    swap(P[i], P[j]);
                    swap(V[i], V[j]);
                }
                else
                    if(P[i] == P[j])
                        if(V[i] > V[j])
                            swap(V[i], V[j]);
        for(int i = 1; i < 10 ; i ++)
            if(F[i])
            {
                fout << i << " ";
                for(int j = 1 ; j <= n ; j ++)
                    if(P[j] == i)
                        fout << V[j] << " ";
                fout << "
";
            }
    }
    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 #3403 Produse

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