选择一个位置能够拍摄到所有的运动员,如果没有-1.
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 typedef pair<int,int> P; 7 const int maxn = 1005; 8 P seg[maxn]; 9 10 bool isInSeg(int x,P p){ 11 return x<=p.second&&x>=p.first?true:false; 12 } 13 14 int main(){ 15 int n,s,l,r; 16 bool flag=true; 17 scanf("%d %d",&n,&s); 18 int lef=-1,rig=1005; 19 for(int i=0;i<n;i++){ 20 scanf("%d%d",&seg[i].first,&seg[i].second); 21 if(seg[i].first>seg[i].second) swap(seg[i].first,seg[i].second); 22 for(int j=i-1;flag&&j>=0;j--){ 23 if(!(isInSeg(seg[i].first,seg[j])||isInSeg(seg[i].second,seg[j])||isInSeg(seg[j].first,seg[i])||isInSeg(seg[j].second,seg[i]))) flag=false; 24 } 25 lef=max(lef,seg[i].first); 26 rig=min(rig,seg[i].second); 27 // printf("%d-%d\n",rig,lef); 28 } 29 if(!flag) printf("-1\n"); 30 else if(isInSeg(s,P(lef,rig))) printf("0\n"); 31 else if(s<lef) printf("%d\n",lef-s); 32 else printf("%d\n",s-rig); 33 34 35 36 return 0; 37 }