代码不知道出了什么问题
查看原帖
代码不知道出了什么问题
552688
clx201022楼主2023/7/12 11:40

rt 代码:

#include<bits/stdc++.h>
using namespace std;
inline bool cmp(int b,int l){return b<l;}
int main()
{
	int n=0,m=0,sum=0,on_Table=0;
	cin>>n>>m;
	int a[n+1]={};
	for(int i=0;i<=n-1;i++)
	{
		cin>>a[i];
		sum+=a[i];
	}
	sort(a,a+n,cmp);
	for(int i=0;i<=n-1;i++)
	{
		if(i!=0&&a[i-1]==a[i])
		{
			continue;
		}//找到每一个数的开始
		int on_the_table=0;//在桌子上牌的总和 
		int next_subscript=i;//牌堆顶的牌 
		int now_subscript=next_subscript;//拿一张
		next_subscript=(next_subscript+1)%n;//牌堆更新 
		on_the_table+=a[now_subscript];//放 
		int start_subscript=i;//弃牌堆开始的下标 
		if(next_subscript==start_subscript)
			goto repeated;//弃牌堆里的牌不能拿 
		while(a[next_subscript]==a[now_subscript]||a[next_subscript]==(a[now_subscript]+1)%m)
		{//如果可以跟着放 
			now_subscript=next_subscript;//拿牌 
			next_subscript=(next_subscript+1)%n;//牌堆更新 
			on_the_table+=a[now_subscript];//放 
			if(next_subscript==start_subscript)
				goto repeated;//弃牌堆里的牌不能拿 
		}
		repeated:on_Table=max(on_Table,on_the_table);
	}
	cout<<sum-on_Table;
	return 0;
}
2023/7/12 11:40
加载中...