題意:一條一維座標軸,一個拍攝者在x0的位置,如果他在一個運動員運動的週期範圍內(a1~b1),他就可以排到這個運動員,問你最小走幾步的位置可以拍到所有運動員,若沒有輸出-1。(a可能大於b)
數據範圍:運動員人數是不大於100,位置是0~1000
分析:暴力枚舉1000個點在所有ab範圍內並且離x0最近的,若沒有就輸出-1。
代碼:
#include<cstdio> #include<cmath> #include<cstring> #include<queue> #include<stack> #include<cstdlib> #include<iomanip> #include<string> #include<vector> #include<map> #include<string> #include<iostream> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f typedef long long ll; #define Max(a,b) (a>b)?a:b #define lowbit(x) x&(-x) int main() { int n,a[5005]={0},x,y,ans=INF,x0; scanf("%d%d",&n,&x0); for(int i=0;i<n;i++) { scanf("%d%d",&x,&y); if(x>y) swap(x,y); for(int j=x;j<=y;j++) { a[j]++; if(a[j]==n) { if(abs(j-x0)<ans) ans=abs(j-x0); } } } if(ans==INF) ans=-1; printf("%d\n",ans); }