CF1482B 求条(洛谷无原题)
查看原帖
CF1482B 求条(洛谷无原题)
466596
MorningStarCzy楼主2025/2/5 15:15

rt.

#include<bits/stdc++.h>
//#define int long long
using namespace std;
int a[100005];
int p[100005];
int w[100005];
void Solve()
{
	int n,maxx=-1;cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i],p[i]=a[i]-a[i-1],maxx=max(maxx,a[i]);
	int k1=-1,k2=1;
	for(int i=2;i<=n;i++)
	{
		if(k1==-1&&p[i]>=0) k1=p[i];
		if(k2==1&&p[i]<0) k2=p[i];
		if(p[i]!=k1&&~k1&&p[i]>=0){cout<<-1<<endl;return;}
		if(p[i]!=k2&&k2!=0&&p[i]<0){cout<<-1<<endl;return;}
	}
	if(k1==0&&k2==1){cout<<0<<endl;return;}
	if(k1==0&&k2!=1){cout<<-1<<endl;return;}
	int m=k1+(-k2),c=k1,s=a[1];
	if(m<=maxx){cout<<-1<<endl;return;}
	w[1]=s;
	for(int i=2;i<=n;i++)
	{
		w[i]=(w[i-1]+c)%m;
		if(w[i]!=a[i]){cout<<-1<<endl;return;}
	}
	cout<<m<<" "<<c<<endl;
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int T;cin>>T;
	while(T--) Solve(); 
	return 0;
}

WA on test #2.

2025/2/5 15:15
加载中...