알고리즘 설계 및 분석 섹션 1.4

★ 제목 설명

N 간격은 엔드 포인트가 i 번째의 구간 및 리 RI, 즉, i 번째의 구간에 따르면이다있다 [리튬, RI]

간격의 최소 번호가 범위를 모두 포함되어 있습니다. 본 출력 간격 번호 달리 출력 값이 "-1."

그것은 다른 간격 [C, D]를 포함하는 구간 [A, B]를 가정하면, 포함하는 부분을 말한다 요구는 <= C <= D <= B를 만족한다.

★ 입력 형식

첫번째 라인 간격의 정수를 나타내고, N, N <= 100000

다음 N 개의 라인 정수 리튬, ri 나타내고, 제 i 번째의 구간 끝점 1 <= 리 <= RI <= 1,000,000,000

데이터, N <= 100 (1)의 30 % <= 리 <= RI <= 100

데이터의 80 %, N <= 1000, 1 <= 리 <= RI <= 1000

데이터, N <= 100,000, 1 내지 100 % <= 리 <= RI <= 1,000,000,000

★ 출력 형식

정수는 숫자 범위의 요구 사항을 충족. 출력이 경우 -1.

★ 샘플 입력

3
1 1
2 2
3 3

★ 샘플 출력

-1
/*
直切要点:
如果存在一个区间包含所有其他区间
那么该区间的长度一定最大 
*/

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin>>n;
    
    int l,r,minL,maxR;
    scanf("%d%d",&minL,&maxR);
    int resL=minL,resR=maxR, resid=1; //如果是答案区间,那么该区间长度一定最大 
    for(int i=2; i<=n; ++i){
        scanf("%d%d",&l,&r);
        minL = min(l,minL);
        maxR = max(r,maxR);
        
        if(resR-resL<r-l) resL=l,resR=r,resid=i; 
    }
    
    if(resL==minL && resR==maxR) printf("%d\n",resid);
    else printf("-1\n"); 
    return 0;
}

추천

출처www.cnblogs.com/yejifeng/p/12044333.html