求hack
  • 板块灌水区
  • 楼主Eterna
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/18 10:49
  • 上次更新2024/8/18 11:39:53
查看原帖
求hack
1348260
Eterna楼主2024/8/18 10:49

题目

提交记录0分

样例全过。求1组hack。

#include<bits/stdc++.h>
#define int long long
#define gc getchar()
#define rd read()
#define N 2000005
using namespace std;
inline int read()
{
	register int x=0,ss=1;
	register char s=gc;
	while(!isdigit(s)&&s!='-')s=gc;
	if(s=='-')ss*=-1,s=gc;
	while(isdigit(s))x=(x<<1)+(x<<3)+s-'0',s=gc;
	return ss*x;
}
int T,n,ans;
int a[N];
int b[N],pt[N];
void solve()
{
	ans=0;
	n=rd;
	for(int i=1;i<=n;i++)a[i]=rd,pt[i]=a[i]%2,b[i]=0;
	if(n<=3)
	{
		cout<<n-1;
		return;
	}
	int pos=1,fpos=1,fl=0;
	for(int i=2;i<=n;i++)if(pt[i]!=pt[i-1])fl++;
	for(int i=1;i<n;i++)
	{
		b[a[i]]=1;
		while(b[pos])pos++;
		while(b[n-fpos+1])fpos++;
		if(pos==i+1||fpos==i+1||(i==1&&(a[i]==1||a[i]==n))||(i==2&&(a[i]==1&&a[i-1]==n||a[i-1]==1&&a[i]==n)))ans++;
	}
	cout<<ans+(fl==1);
}
signed main()
{
	T=rd;
	while(T--)solve(),putchar('\n');
	return 0;
}
2024/8/18 10:49
加载中...