感觉内存很小
#include<iostream>
#include<queue>
#include<cmath>
#include<string.h>
#include<bitset>
using namespace std;
struct point{
int place;
int fanwei;
};
point *map;//7 MB
int n;
bool *visited;//0.03 MB
queue<int> work;
bool bfs(int k){
for(int i=1;i<=n;i++)
visited[i]=0;
while(!work.empty())
work.pop();
work.push(1);
while(work.empty()!=1){
int front=work.front();
work.pop();
if(visited[front])
continue;
visited[front]=1;
for(int i=1;i<=n;i++){
if(abs(map[i].place-map[front].place)<=map[front].fanwei+k&&!visited[i]){
work.push(i);
}
}
}
return visited[n];
}
int check(int k){
return bfs(k);
}
int erfen(int from,int to){
while(from!=to){
int mid=(from+to)/2;
if(check(mid)){
to=mid;
}
else{
from=mid+1;
}
}
return from;
}
int main(){
cin>>n;
map=new point[n+1];
visited=new bool[n+1];
for(int i=1;i<=n;i++){
cin>>map[i].place>>map[i].fanwei;
}
cout<<erfen(0,1000000000);
}