关于 E
  • 板块灌水区
  • 楼主_sh1kong_
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/12/31 17:32
  • 上次更新2023/12/31 20:48:33
查看原帖
关于 E
823773
_sh1kong_楼主2023/12/31 17:32

RT,思路是不断放 nn,遇到 nn 便特判,有没有佬说明一下做法或者给出 hackhack。

//bkk
#include <bits/stdc++.h>

#define int long long
#define LL long long
#define I ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define mem(a, v) memset(a, v, sizeof a)
#define re read()

const int N = 2e6 + 7, M = 16;

using namespace std;

inline LL read()
{
	int num = 0;char c;bool flag = false;
    while((c = getchar()) == ' ' || c == '\n' || c == '\r');
    if(c == '-') flag = true;else num = c - '0';
    while(isdigit(c = getchar())) num = num * 10 + c - '0';
    return (flag ? -1 : 1) * num;	
} 

const int mod = 998244353, inf = 0x3f3f3f3f3f3fll;

int t;

int n;

int p[N];

signed main()
{
	I;
	
	t = re;
	while (t -- )
	{
		n = re;
		for (int i = 1; i <= n; i ++ ) p[i] = re;
		if (n <= 2)
		{
			cout << "-1" << '\n';
			continue;
		}
		for (int i = 1; i <= n; i ++ )
		{
			if (p[i] == n) 
			{
				if (i >= 2 && p[i - 1] == n - 1 && p[i + 1] == n - 2 || p[i - 1] == n - 2 && p[i + 1] == n - 1) cout << "1" << ' ';
				else if (p[i - 1] == n - 1)
				{
					cout << n - 2 << ' ';
				} 
				else if (p[i + 1] == n - 1) 
				{
					cout << n - 2 << ' ';
				}
				else cout << n - 1 << ' ';
			}
			else cout << n << ' ';
		}
		cout << '\n';
	}
}

2023/12/31 17:32
加载中...