hdu 1509
#include<stdio.h>
#include<string.h>
struct E
{
char name[1000];
char less[1000];
int d;
int num;
}e[60024];
int c = 0,max = 0,count = 0;
void swap( int x,int y )
{
struct E t;
t = e[ x ];
e[ x ] = e[ y ];
e[ y ] = t;
}
int cmp( int x,int y )
{
if( e[ x ].d == e[ y ].d )
if( e[x].num < e[y].num )
return 1;
else
return 0;
else
return e[x].d < e[y].d ? 1 : 0;
}
void down( int i )
{
int p = 2 * i;
if( p <= c )
{
if( p + 1 <= c && cmp( p + 1,p ) )
++p;
if( cmp( p,i ) )
{
swap( i,p );
down( p );
}
}
}
void pop( )
{
printf( "%s %s\n",e[1].name,e[1].less );
swap( 1,c-- );
down( 1 );
}
void up( int i )
{
if( i > 1 )
{
if( cmp( i, i / 2 ) )
{
swap( i,i/2 );
up( i / 2 );
}
}
else
return ;
}
void insert( )
{
++c;
++count;
scanf( "%s%s%d",e[c].name,e[c].less,&e[c].d );
e[c].num = count;
int num = 0;
up( c );
}
char str[100] = { 0 },get[ ] = "GET",put[ ] = "PUT";
int main( )
{
while( scanf( "%s",str )!= EOF )
{
if( !strcmp( str,get ) )
{
if( !c )
printf( "EMPTY QUEUE!\n" );
else
{
pop( );
}
}
else
{
insert( );
}
}
return 0;
}
本人还是新手 ,转载请注明来自Lvsi‘s home
浙公网安备 33010602011771号