re
查看原帖
re
1308602
QwQ_QaQ_QuQ楼主2024/10/20 13:31
#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;
}

帮帮忙

2024/10/20 13:31
加载中...