#include <iostream>

class Item{
private:
	int key;
	int data;
public:
	Item(): data(0), key(0){}
	Item(int data, int key): data(data), key(key){}
	void print(){
		std::cout << "data: " << data << ", key " << key << std::endl;
	}
	bool operator <(const Item &item){ return key < item.key; }
	bool operator >(const Item &item){ return key > item.key; }
};

template<class Item>
class PQ{
private:
	Item *pq;
	int n;
public:
	PQ(int max){
		pq = new Item[max];
		n = 0;
	}
	int empty() const{ return n == 0; }
	void insert(Item item){
		pq[n++] = item;
	}
	Item getmax(){
		int max = 0;

		for(int i = 1; i < n; i+)
			if(pq[max] < pq[i])
				max = i;
		std::swap(pq[max], pq[n-1]);
		return pq[--n];
	}
	void show(){
		for(int i = 0; i < n; i++)
			pq[i].print();
	}
};

int main(){
	int p;
	Item item;
	PQ<Item> pq(50);
	
	for(int i = 0; i < 10; i++)
		pq.insert(Item(7, i));

	pq.show();

	std::cout << "max:\n";
	item = pq.getmax();

	std::cin >> p;
	return 0;
}