#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read()
{
int x=0,F=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
F=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*F;
}
void write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
const int N=1E5;
int a[N+5], sh, n, s[2], t[2], fg = 1, zd, u, v1;
signed main(){
//泥嚎,写题吧骚年
sh=read(), n=read(), a[0]=read(), t[0]=a[0], sh-=n;
while(s[fg]=read(), t[fg]=read())
{
if(s[fg]==-1&&s[fg]==-1)
break;
s[fg] -= n;
if(s[fg]-s[1-fg]>1)
for(int i=s[1-fg]+1; i<s[fg]; ++i)
a[i]=a[i-1]+(t[fg]-t[1-fg])/(s[fg]-s[1-fg]);
a[s[fg]]=t[fg], zd=max(s[fg], zd), fg=1-fg;
}
u=read();
while(a[zd]-u)
++zd, a[zd]=a[zd-1]-u;
for(int v=0; v<=N; ++v)
{
v1 = (sh+v)*a[sh], fg=0;
for(int i=0; i<=zd && fg == 0; ++i)
if(v1<(i+v)*a[i])
fg=1;
if(fg==0)
{
write(v);
return 0;
}
v1 = (sh-v)*a[sh], fg=0;
for(int i=0; i<=zd && fg==0; ++i)
if(v1<(i-v)*a[i])
fg=1;
if(fg==0)
{
write(-v);
return 0;
}
}
puts("NO SOLUTION");
return 0;
}
帮帮忙