QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#884828#9785. ShrookszhanghuanruiWA 0ms5968kbC++141.8kb2025-02-06 11:07:122025-02-06 11:07:13

Judging History

This is the latest submission verdict.

  • [2025-02-06 11:07:13]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 5968kb
  • [2025-02-06 11:07:12]
  • Submitted

answer

#include <bits/stdc++.h>
#define int long long
#ifdef zhr_debug
void debug(const char *s,...){static va_list args;va_start(args,s);vfprintf(stderr,s,args);va_end(args);}
#else
void debug(const char* s,...){}
#endif
using namespace std;
void freopen(string file){freopen((file+".in").c_str(),"r",stdin);freopen((file+".out").c_str(),"w",stdout);}
const int mod=998244353;
int n,m;
int a[200009];
int b[200009];
int ans[6];
void rotate()
{
	for(int i=1;i<=n;i++) b[i]=-1;
	for(int i=1;i<=n;i++) if(a[i]>=0) b[n-a[i]+1]=i;
	for(int i=1;i<=n;i++) a[i]=b[i];
}
int calc(int x1,int x2,int y1,int y2)
{
	if(!(a[x1]==y1 || a[x1]==y2 || a[x1]==-1) || !(a[x2]==y1 || a[x2]==y2 || a[x2]==-1)) return 0;
	if(a[x1]!=-1 && a[x2]!=-1 && a[x1]==a[x2]) return 0;
	if(a[x1]==-1 && a[x2]==-1) return 2;
	return 1;
}
int f(vector<int> vec){int ret=0;for(int x1:vec)ret+=!!x1;return max(0ll,ret-1);}
int solve()
{
	scanf("%lld",&n);m=n/2;
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	if(n&1)
	{
		for(int o:{0,1,2,3})
		{
			if(a[n]!=m+1 && a[n]!=-1) ans[o]=0;
			else
			{
				ans[o]=1;
				for(int i=0;i<m;i++) ans[o]=ans[o]*calc(m-i,m+1+i,1+i,n-i)%mod;
			}
			rotate();
		}
		return (ans[0]+ans[1]+ans[2]+ans[3]-f({ans[0],ans[1]})-f({ans[0],ans[3]})-f({ans[2],ans[1]})-f({ans[2],ans[3]}))%mod;
	}
	else
	{
		for(int o:{0,1,2,3})
		{
			if(a[1]!=m && a[1]!=-1 || a[m+1]!=n && a[m+1]!=-1) ans[o]=0;
			else
			{
				ans[o]=1;
				for(int i=0;i<m-1;i++) ans[o]=ans[o]*calc(2+i,n-i,m-i-1,m+i+1)%mod;
			}
			rotate();
		}
		ans[4]=1;
		for(int i=0;i<m;i++) ans[4]=ans[4]*calc(1+i,n-i,m-i,m+1+i)%mod;
		return (ans[0]+ans[1]+ans[2]+ans[3]+ans[4]-f({ans[0],ans[2],ans[4]})-f({ans[1],ans[3],ans[4]}))%mod;
	}
}
signed main()
{
	int t;
	cin>>t;
	while(t--)solve();
}

详细

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 5968kb

input:

6
2
1 2
3
-1 -1 -1
4
1 -1 -1 -1
5
1 -1 -1 -1 5
6
3 -1 -1 -1 -1 4
10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1

output:


result:

wrong answer Answer contains longer sequence [length = 6], but output contains 0 elements