题目链接:
http://codeforces.com/problemset/problem/14/B
View Code
题意:一条一维坐标轴,一个拍摄者在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); }