Napisz program w c++ z wykorzystaniem tablic. Treść zadania poniżej, z góry dziękuję za pomoc!
Bitomir, właściciel klubu piłkarskiego FC Bajtocja, zamówił ciężarówkę butów dla zawodników. Wszystkie buty są takie same, różnią się tylko rozmiarem i nogą, na której się je nosi. Niestety, poszczególne pary nie są opakowane w oddzielne pudełka ani nie są powiązane w pary. Bitomir przed rozdaniem butów zawodnikom musi tylko dobrać je „lewy-prawy” według wielkości. Podejrzewa jednak, że w transporcie mogła zaginąć część przesyłki i nie wszystkie dostarczone buty są „do pary”. Musisz więc dopomóc mu w zliczeniu, ile par butów będzie można skompletować.
Wejście Pierwszy wiersz: n – liczba pojedynczych butów przesłanych do klubu (2 ≤ n ≤ 105). Możesz założyć, że n jest parzyste. Drugi wiersz: n/2 liczb oznaczających numery butów lewych. Trzeci wiersz: n/2 liczb oznaczających numery butów prawych. Numery butów są liczbami całkowitymi z zakresu [1, 500 000] i oddzielone są pojedynczymi odstępami.
Wyjście Twój program powinien wypisać wiersz tekstu zawierający jedną liczbę naturalną: liczbę par możliwych do skompletowania.
Odpowiedź:
#include <iostream>
#include <unordered_map>
#include <sstream>
using namespace std;
int main() {
int n;
cout << "Podaj liczbe butow: ";
cin >> n;
int* lewe = new int[n/2];
int* prawe = new int[n/2];
cout << "Podaj rozmiary butow lewych: ";
for (int i = 0; i < n/2; i++) {
cin >> lewe[i];
}
cout << "Podaj rozmiary butow prawych: ";
for (int i = 0; i < n/2; i++) {
cin >> prawe[i];
}
unordered_map<int, int> mapa;
int liczba_par = 0;
for (int i = 0; i < n/2; i++) {
mapa[lewe[i]]++;
}
for (int i = 0; i < n/2; i++) {
if (mapa[prawe[i]] > 0) {
liczba_par++;
mapa[prawe[i]]--;
}
}
cout << "Liczba par butow: " << liczba_par << endl;
delete[] lewe;
delete[] prawe;
return 0;
}