为什么一定要枚举位置l啊,直接枚举结点n不是更快吗
查看原帖
为什么一定要枚举位置l啊,直接枚举结点n不是更快吗
222889
summer_summer楼主2020/7/24 09:51
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int a[N],l,n,ans;
bool judge1(int x)
{
	if(x==1) return 0;
	for(int j=1;x-j>=1&&x+j<=n;j++)
	{
		if(a[x]-a[x-j]!=a[x+j]-a[x]) return 0;
	}
	return 1;
}
bool judge2(int x)
{
	if(x==1||x==n-1) return 1;
	for(int j=1;x-j>=1&&x+j+1<=n;j++)
	{
		if(a[x]-a[x-j]!=a[x+j+1]-a[x+1]) return 0; 
	}
	return 1;
}
int main()
{
	cin>>n>>l;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	for(int i=1;i<=n-1;i++)
	{
		if(judge1(i)) ans++;
		if(judge2(i)) ans++;
	}
	cout<<ans<<endl;
}
2020/7/24 09:51
加载中...