Pagini recente » Cod sursa (job #2901286) | Cod sursa (job #2085599) | Cod sursa (job #2828539) | Cod sursa (job #2123060) | Cod sursa (job #2919124)
// This program was written by Mircea Rebengiuc
// for problem mergeheap
// on 15.08.2022
#include <stdio.h>
#include <ctype.h>
#include <queue>
#define magic_sauce inline __attribute__((always_inline))
FILE *fin, *fout;
magic_sauce int fgetint(){
int n = 0, ch;
while( !isdigit( ch = fgetc( fin ) ) );
do
n = n * 10 + ch - '0';
while( isdigit( ch = fgetc( fin ) ) );
return n;
}
#define MAXN 100
std::priority_queue<int> heaps[MAXN];
int main(){
fin = fopen( "mergeheap.in", "r" );
fout = fopen( "mergeheap.out", "w" );
int n, q, i, a, b;
n = fgetint();
q = fgetint();
for( ; q-- ; ){
switch( fgetint() ){
case 1:
i = fgetint() - 1;
heaps[i].push( fgetint() );
break;
case 2:
fprintf( fout, "%d\n", heaps[i = fgetint() - 1].top() );
heaps[i].pop();
break;
case 3:
a = fgetint() - 1;
b = fgetint() - 1;
if( heaps[b].size() > heaps[a].size() )
std::swap( heaps[a], heaps[b] );
while( heaps[b].size() ){
heaps[a].push( heaps[b].top() );
heaps[b].pop();
}
break;
}
}
fclose( fin );
fclose( fout );
return 0;
}