Î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
Răspunsuri la întrebare
Răspuns: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;
}
Explicație: