Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define cin fin
- #define cout fout
- #define sp << " " <<
- #define nl << "\n"
- ifstream fin("prob5.in");
- ofstream fout("prob.out");
- int n, i, j, h[100], k, y, a;
- void insert(int a) {
- n++;
- k++;
- h[k] = a;
- }
- void aranjeaza(int nn) {
- int x;
- x = h[nn];
- while (nn > 1 && x > h[nn / 2]) {
- h[nn] = h[nn / 2];
- nn = nn / 2;
- }
- h[nn] = x;
- }
- void coboara(int n) {
- int fiu = -1;
- while (fiu != 0) {
- if (2 * n <= k)
- fiu = 2 * n;
- if (2 * n + 1 <= k && h[2 * n + 1] > h[fiu])
- fiu = 2 * n + 1;
- if (h[fiu] <= h[n])
- fiu = 0;
- if (fiu) {
- swap(h[n], h[fiu]);
- n = fiu;
- }
- }
- }
- void sterg() {
- if (k < 1) return;
- h[1] = h[k];
- k--;
- n--;
- coboara(1);
- }
- int main() {
- int t;
- k = 0;
- while (cin >> t) {
- insert(t);
- aranjeaza(k);
- }
- cout << "Avem max-heapul: " << endl;
- for (i = 1; i <= k; i++)
- cout << h[i] << " ";
- cout nl nl;
- cout << "Max1, Max2 si Max3 sunt: " << h[1] sp h[2] sp h[3] nl nl;
- for (int i = 1; i <= 3; i++) {
- sterg();
- }
- if (k == 0) {
- cout << "Heapul este gol!" nl;
- } else {
- cout << "Avem max-heapul modificat: " << endl;
- for (i = 1; i <= k; i++)
- cout << h[i] << " ";
- cout << endl;
- }
- // vector<int> lol;
- // for (i = 1; i <= n; i++)
- // lol.push_back(h[i]);
- // sort(lol.begin(), lol.end());
- // int maxxx = -999999;
- // int nmaxx = 0;
- // cout << "Elementele din heap in ordine crescatoare:\n";
- // for (auto &it: lol) {
- // if (it > maxxx) {
- // maxxx = it;
- // nmaxx = 1;
- // } else if (it == maxxx) nmaxx++;
- // cout << it << " ";
- // }
- // cout << endl;
- // cout << "Elemente egale cu max: " << nmaxx << " ("<< maxxx << ")\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement