求助,20,其他全T
查看原帖
求助,20,其他全T
752418
BAIMON楼主2023/7/23 10:19
#include<iostream>
#include<algorithm>
#include<cstdio>
#define inf 0x7f7f7f7f
using namespace std;
int n,m,a[400010],f[400010];
int read() 
{
	int x=0;
	char c=getchar();
	while(c<'0'||c>'9')c=getchar();
	while(c>='0'&&c<='9') 
	{
		x*=10;
		x+=c-'0';
		c=getchar();
	}
	return x;
}
int maxx=-inf,minn=inf,vis[400010],ans=inf,tot;
void dfs(int x)
{
	if(tot==m)
	{
		ans=min(ans,maxx-minn);
		return;
	}
	for(int i=x;i<=n;i++)
	{
		if(!vis[i]&&!vis[i-1]&&!vis[i+1])
		{
			int xx=maxx,yy=minn;
			tot++;
			vis[i]=1;
			maxx=max(maxx,a[i]);
			minn=min(minn,a[i]);
			dfs(i);
			maxx=xx;
			minn=yy;
			tot--;
			vis[i]=0;
		}
	}
}
int main()
{
//	freopen("D3.in","r",stdin);
//	freopen("T4.out","w",stdout);
	n=read(),m=read();
	for(int i=1;i<=n;i++)
	{
		a[i]=read();
	}
	dfs(1);
	cout<<ans;
}
2023/7/23 10:19
加载中...