思路:计算出时刻 ti∼ti+1 的速度 vi,然后排个序。每次询问更改 ti−1∼ti,ti∼ti+1 和对应的速度,答案和前三大做个比较输出。
// Problem: T486086 「LAOI-6」区间测速
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/T486086?contestId=157920
// Memory Limit: 512 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T>
inline void read(T &x){x=0;char ch=getchar();bool f=0;while(ch<'0'||ch>'9'){if(ch=='-')f=1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();if(f)x=-x;}
template <typename T,typename ...Args>
inline void read(T &tmp,Args &...tmps){read(tmp);read(tmps...);}
template <typename T,typename ...Args>
inline void readn(T a[],int _){for(int i=1;i<=_;i++) read(a[i]);}
template <typename T>
inline void write(T x){if(x<0) putchar('-'),x=-x;if(x>9) write(x/10);putchar(x%10+48);}
template <typename T,typename ...Args>
inline void write(T tmp,Args ...tmps){write(tmp);putchar(' ');write(tmps...);}
template <typename ...Args>
inline void writeln(Args ...tmps){write(tmps...);putchar('\n');}
constexpr int N=1e5+7;
struct node{ll x,t;int id;}a[N];//v[i]:a[i]到a[i+1]的速度
int id[N];
ll v[N];
inline ll calc(node x,node y)
{
return abs((x.x-y.x)/(x.t-y.t));
}
int main()
{
int n,Q;
read(n,Q);
for(int i=1;i<=n;i++) read(a[i].x,a[i].t),a[i].id=i;
sort(a+1,a+n+1,[&](node X,node Y){return X.t<Y.t;});
for(int i=1;i<=n;i++) id[a[i].id]=i;
for(int i=1;i<n;i++) v[i]=calc(a[i],a[i+1]);
sort(v+1,v+n,greater<ll>());
// for(int i=1;i<=n;i++) cout<<v[i]<<' ';
while(Q--)
{
int x,y,i;
read(x,y);
i=id[x];
node tmp=a[i];
ll v01=calc(a[i-1],tmp);
ll v02=calc(a[i+1],tmp);
cerr<<"t:"<<a[i-1].t<<' '<<tmp.t<<' '<<a[i+1].t<<endl;
tmp.t=y;
ll v1=calc(a[i-1],tmp);
ll v2=calc(a[i+1],tmp);
ll va=v[1],vb=v[2],vc=v[3];
if(va==v01) va=v1,v1=v01=-1;
if(vb==v01) vb=v1,v1=v01=-1;
if(vc==v01) vc=v1,v1=v01=-1;
if(va==v02) va=v2,v2=v02=-1;
if(vb==v02) vb=v2,v2=v02=-1;
if(vc==v02) vc=v2,v2=v02=-1;
writeln(max({v1,v2,va,vb,vc}));
}
return 0;
}
/*
访问第i个监控:a[id[i]];
*/