Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define sc(x) scanf( "%d" , &x )
- #define REP(i , n) for( int i = 0 ; i < (n) ; ++i )
- #define clr( t , val ) memset( t , val , sizeof( t ) )
- #define pb push_back
- #define all(v) v.begin() , v.end()
- #define SZ(v) ((int)(v).size())
- #define mp make_pair
- #define fi first
- #define se second
- #define N 100
- #define INF (1<<20)
- typedef long long ll;
- typedef long double ld;
- typedef pair< int , int > pii;
- typedef vector< pii > vpii;
- typedef vector< int > vi;
- typedef vector< vi > vvi;
- int main(){
- int cases;
- sc( cases );
- REP( tc , cases ){
- int n;
- sc( n );
- vi F( n );
- REP( j , 2 ) {
- REP( i , n - 2 ){
- int x;
- sc( x );
- x --;
- F[ x ] ++;
- }
- }
- /*
- if( n == 3 ){
- puts( "none" );
- puts( "3 1" );
- puts( "2 1" );
- continue;
- }*/
- vpii vec;
- REP( i , n - 2 )
- vec.pb( mp( F[ i ] , i ) );
- sort( all( vec ) );
- vpii vec2;
- REP( i , min( 2 , SZ( vec ) ) )
- vec2.pb( vec[ i ] );
- REP( i , min( 2 , SZ( vec ) ) )
- vec2.pb( vec[ SZ( vec ) - 1 - i ] );
- sort( all( vec2 ) );
- vec2.resize( unique( all( vec2 ) ) - vec2.begin() );
- REP( i , 2 )
- vec2.pb( mp( F[ n - 1 - i ] , n - 1 - i ) );
- int best = -1;
- vi x( 2 ) , y( 2 );
- REP( i , SZ( vec2 ) )
- REP( j , SZ( vec2 ) )
- REP( k , SZ( vec2 ) ){
- if( i == j ) continue;
- if( i == k ) continue;
- if( j == k ) continue;
- if( (vec2[ k ].se == n - 1) || (vec2[ k ].se == n - 2) ) continue;
- vec2[ i ].fi ++;
- vec2[ j ].fi ++;
- vec2[ k ].fi += 2;
- int maxi = 0 , mini = INT_MAX;
- REP( p , SZ( vec2 ) ){
- maxi = max( maxi , vec2[ p ].fi );
- mini = min( mini , vec2[ p ].fi );
- }
- //cout << mini << " " << maxi << endl;
- int cnt = 0;
- if( vec2[ SZ(vec2) - 1 ].fi != maxi && vec2[ SZ(vec2) - 1 ].fi != mini ) cnt ++;
- if( vec2[ SZ(vec2) - 2 ].fi != maxi && vec2[ SZ(vec2) - 2 ].fi != mini ) cnt ++;
- if( cnt > best ){
- best = cnt;
- x[ 0 ] = vec2[ i ].se , x[ 1 ] = vec2[ k ].se;
- y[ 0 ] = vec2[ j ].se , y[ 1 ] = vec2[ k ].se;
- }
- vec2[ i ].fi --;
- vec2[ j ].fi --;
- vec2[ k ].fi -= 2;
- }
- if( best == 0 ) puts( "none" );
- else if( best == 1 ) puts( "one" );
- else puts( "both" );
- printf( "%d %d\n" , x[ 0 ] + 1 , x[ 1 ] + 1 );
- printf( "%d %d\n" , y[ 0 ] + 1 , y[ 1 ] + 1 );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment