这是自己写的:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 100005
struct anpai{
int start;
int end;
}s[maxn];
int main()
{
int n,idx=1;
scanf("%d",&n);
scanf("%d%d",&s[1].start,&s[1].end);
int max=s[1].end,min=s[1].start;
for(int i=2;i<=n;i++)
{
scanf("%d%d",&s[i].start,&s[i].end);
//找到开始时间小,结束时间大的那个,此处注意,是同时满足,不一定是开始时间和结束时间的最小值
if(min>=s[i].start&&max<=s[i].end)
{
max=s[i].end;
min=s[i].start;
idx=i;
}
}
for(int i=1;i<=n;i++)
{
if(max<s[i].end||min>s[i].start)//判断找的那个是否满足开始时间最小且结束时间最大
{
printf("-1\n");
return 0;
}
}
printf("%d\n",idx);
return 0;
}
这是神牛的代码
#include<iostream>
using namespace std;
int main(){
int n,a,b,c,d,ans=-1;
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b;
if(i==0){c=a;d=b;}
if(a<c){c=a; ans=-1;}
if(d<b){d=b; ans=-1;}
if(a==c&&b==d)ans=i+1;}
cout<<ans<<endl;}