Hack
查看原帖
Hack
1247131
_Day_Tao_楼主2024/9/26 08:30

对于这份代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ull unsigned long long
#define pii pair<int,int>
#define ls root << 1
#define rs root << 1 | 1
#define mid ((l + r) >> 1)
const int MAX = 3e5 + 5;
const int mod = 998244353;
const int INF = 0x7fffffff;
int a[MAX],n;
signed main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	int i=1,j=2,k=0;
	while(i+k<=n&&j+k<=n)
	{
		if(a[i+k]==a[j+k]) k++;
		else
		{
			if(a[i+k]>a[j+k]) i+=k+1;
			else j+=k+1;
			if(i==j) i++;
			k=0;
		}
	}
	int res=min(i,j);
	for(i=1;i<=n;i++)
		printf("%lld ",a[(res+i-2)%n+1]);
	return 0;
}

in:

4
2 1 3 1

ans:

1 2 1 3

out:

1 3 1 2

没有判与前面匹配的情况也能 AC。因为这个以前这么写过了但是现在看看不懂了

2024/9/26 08:30
加载中...