class Solution {
public :
class element{
public :
int value;
int index;
int row;
int arrsize;
element( int val,int indexnumber,int rownumber,int arraysize)
{
value= val;
index= indexnumber;
row= rownumber;
arrsize= arraysize;
}
} ;
struct compare{
bool operator( ) ( element a,element b)
{
return a.value > b.value ;
}
} ;
vector< int > smallestRange( vector< vector< int >> & arr) {
int mn= INT_MAX ,mx= INT_MIN ,range= INT_MAX ;
priority_queue< element,vector< element> ,compare> q;
int k= arr.size ( ) ;
int low,high;
for ( int i= 0 ; i< k; ++ i)
{ q.push ( element( arr[ i] [ 0 ] ,0 ,i,arr[ i] .size ( ) ) ) ;
mn= min( mn,arr[ i] [ 0 ] ) ;
mx= max( mx,arr[ i] [ 0 ] ) ;
}
while ( ! q.empty ( ) )
{
element temp= q.top ( ) ;
q.pop ( ) ;
int maybeminimum= temp.value ;
if ( range> mx- maybeminimum)
{
mn= maybeminimum;
range= mx- mn;
low= mn;
high= mx;
}
if ( temp.index == temp.arrsize - 1 )
break ;
temp.index + = 1 ;
q.push ( element( arr[ temp.row ] [ temp.index ] ,temp.index ,temp.row ,arr[ temp.row ] .size ( ) ) ) ;
mx= max( mx,arr[ temp.row ] [ temp.index ] ) ;
}
vector< int > v{ low,high} ;
return v;
}
} ;
Y2xhc3MgU29sdXRpb24gewpwdWJsaWM6CiAgICAKICAgIGNsYXNzIGVsZW1lbnR7CiAgICAKICAgIHB1YmxpYzoKICAgICAgaW50IHZhbHVlOwogICAgICBpbnQgaW5kZXg7CiAgICAgIGludCByb3c7CiAgICAgIGludCBhcnJzaXplOwogICAgICAKICAgICAgZWxlbWVudChpbnQgdmFsLGludCBpbmRleG51bWJlcixpbnQgcm93bnVtYmVyLGludCBhcnJheXNpemUpCiAgICAgIHsKICAgICAgICAgdmFsdWU9dmFsOwogICAgICAgICBpbmRleD1pbmRleG51bWJlcjsKICAgICAgICAgcm93PXJvd251bWJlcjsKICAgICAgICAgYXJyc2l6ZT1hcnJheXNpemU7IAogICAgICB9CiAgICAgCiAgICB9OwoKICAgc3RydWN0IGNvbXBhcmV7CiAgICAgICBib29sIG9wZXJhdG9yKCkoZWxlbWVudCBhLGVsZW1lbnQgYikKICAgICAgIHsKICAgICAgICAgcmV0dXJuIGEudmFsdWU+Yi52YWx1ZTsKICAgICAgIH0KICAgIAogICB9OwogICAgCiAgICB2ZWN0b3I8aW50PiBzbWFsbGVzdFJhbmdlKHZlY3Rvcjx2ZWN0b3I8aW50Pj4mIGFycikgewogICAgICAgIAogICAgIGludCBtbj1JTlRfTUFYLG14PUlOVF9NSU4scmFuZ2U9SU5UX01BWDsKICAgICBwcmlvcml0eV9xdWV1ZTxlbGVtZW50LHZlY3RvcjxlbGVtZW50Pixjb21wYXJlPiBxOwogICAgIGludCBrPWFyci5zaXplKCk7CiAgICAgaW50IGxvdyxoaWdoOwogICAgIGZvcihpbnQgaT0wO2k8azsrK2kpCiAgICAgICAgIHsgcS5wdXNoKGVsZW1lbnQoYXJyW2ldWzBdLDAsaSxhcnJbaV0uc2l6ZSgpKSk7CiAgICAgICAgICAgbW49bWluKG1uLGFycltpXVswXSk7CiAgICAgICAgICAgbXg9bWF4KG14LGFycltpXVswXSk7CiAgICAgICAgIH0KICAgCiAgICAgd2hpbGUoIXEuZW1wdHkoKSkKICAgICAgIHsKICAgICAgICAgICBlbGVtZW50IHRlbXA9cS50b3AoKTsKICAgICAgICAgICBxLnBvcCgpOwogICAgICAgICAgIGludCBtYXliZW1pbmltdW09dGVtcC52YWx1ZTsKICAgICAgICAgICBpZihyYW5nZT5teC1tYXliZW1pbmltdW0pCiAgICAgICAgICAgewogICAgICAgICAgICAgICBtbj1tYXliZW1pbmltdW07CiAgICAgICAgICAgICAgIHJhbmdlPW14LW1uOwogICAgICAgICAgICAgICBsb3c9bW47CiAgICAgICAgICAgICAgIGhpZ2g9bXg7CiAgICAgICAgICAgfQogICAgICAgICAgIAogICAgICAgICAgIGlmKHRlbXAuaW5kZXg9PXRlbXAuYXJyc2l6ZS0xKQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICAgICAgCiAgICAgICAgICAgdGVtcC5pbmRleCs9MTsgICAgICAKICAgICAgICAgICBxLnB1c2goZWxlbWVudChhcnJbdGVtcC5yb3ddW3RlbXAuaW5kZXhdLHRlbXAuaW5kZXgsdGVtcC5yb3csYXJyW3RlbXAucm93XS5zaXplKCkpKTsKICAgICAgICAgICBteD1tYXgobXgsYXJyW3RlbXAucm93XVt0ZW1wLmluZGV4XSk7CiAgICAgICB9CiAgICAgICAKICAgICB2ZWN0b3I8aW50PiB2e2xvdyxoaWdofTsKICAgICByZXR1cm4gdjsKICAgIH0KfTs=