概要
n 個の区間が与えられる。
他の全ての区間を内包するような区間があれば、その番号を出力せよ。
存在しない場合は -1 を出力せよ。
解法
全区間の内で最小の値と最大の値を求める。
[ 最小値, 最大値 ] という区間が存在すればそれが答え。
本番で書いたコード
int main() { cin.tie( 0 ); ios::sync_with_stdio( false ); int n; cin >> n; VI ls( n ), rs ( n ); REP( i, 0, n ) { cin >> ls[i] >> rs[i]; } int lb = *min_element( ALL( ls ) ), ub = *max_element( ALL( rs ) ), res = -1; REP( i, 0, n ) { if ( lb == ls[i] && ub == rs[i] ) { res = i + 1; } } cout << res << endl; return 0; }