我的方法和你的不一样
by 15167987933yy @ 2023-07-31 14:29:03
要不你也瞅瞅
by 15167987933yy @ 2023-07-31 14:29:41
```c
#include <bits/stdc++.h>
#define MAX (100000+100)
using namespace std;
int x,r,m,n,p,d[MAX];
double Min=-1e9,Max=1e9;
inline void read(int &a)
{
register char c=getchar(); bool f=0;
for (a=0; c<'0'||'9'<c; c=getchar())
if (c=='-') f=1;
for (; '0'<=c && c<='9'; c=getchar())
a=(a<<3)+(a<<1)+(c^48);
if (f) a=-a;
}
int main()
{
read(x); read(m); read(n); r=m;
while (m!=-1 && n!=-1)
{
d[m]=n;
for (int i=p+1; i<m; i++)
d[i]=d[i-1]+(n-d[p])/(m-p);
p=m;
read(m); read(n);
}read(m);
while (d[p]>m)
p++,d[p]=d[p-1]-m;
for (register int i=r; i<=p; i++)
{
double ans=(d[x]*(x-r)-d[i]*(i-r))*1.0/(d[i]-d[x]);
double g=d[i]-d[x];
if (g>0) Max=min(Max,ans);
else Min=max(Min,ans);
}
if (Min>0) printf("%d",(int)ceil(Min));
else if (Max<0) printf("%d",(int)floor(Max));
else puts("0");
return 0;
}
```
by 15167987933yy @ 2023-07-31 14:32:27
@[15167987933yy](/user/934483) 有点看不懂
by Dio_The_World @ 2023-08-07 15:10:54