Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- typedef struct haldacik{
- int size;
- char name[101];
- }HALDA;
- HALDA halda[100001];
- int velkost=1;
- // vlozi meno a hodnotu do prioritnej fronty
- void vloz(char *meno, int hodnota){
- int i;
- HALDA temp;
- i = velkost;
- halda[i].size = hodnota;
- strcpy(halda[i].name,meno);
- while (i>1 && halda[i/2].size < hodnota){
- temp = halda[i];
- halda[i] = halda[i/2];
- halda[i/2] = temp;
- i = i/2;
- //}
- }
- velkost++;
- }
- /// vrati meno, ktore bolo doteraz vlozene s najvyssou hodnotou a odstrani ho z prioritnej fronty
- char *vyber_najvyssie(){
- int i;
- char *vypis;
- int dst;
- int pocetpismen;
- pocetpismen = strlen(halda[1].name);
- //pocetpismen++;
- //printf("%d\n", pocetpismen);
- vypis = (char*)malloc(pocetpismen * sizeof(char));
- strcpy(vypis,halda[1].name);
- i = velkost;
- HALDA temp, temp2;
- temp2 = halda[1];
- halda[1] = halda[i];
- halda[i].size = 0;
- velkost--;
- i = 1;
- dst = i;
- while (1){
- dst = i;
- if (i * 2 <= velkost && halda[i*2].size > halda[dst].size){
- dst = i * 2;
- }
- if(i * 2 + 1 <= velkost && halda[i*2 + 1].size > halda[dst].size) {
- dst = i*2 + 1;
- }
- if (i != dst) {
- temp = halda[i];
- halda[i] = halda[dst];
- halda[dst] = temp;
- i = dst;
- } else {
- break;
- }
- }
- return vypis;
- }
- int main()
- {
- // testuje zo vstupu
- char buf[100];
- int x;
- while (scanf("%s", buf) > 0)
- {
- if (!strcmp(buf, "vyber"))
- printf("%s\n", vyber_najvyssie());
- else
- {
- scanf("%s %d", buf, &x);
- vloz(buf, x);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement