Link:
C:
如果存在可行方案则答案为$2^{n/2}$
#include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef pair<int,int> P; const int MAXN=1e5+10,MOD=1e9+7; int n,x,res[MAXN]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&x); int rk=(n-1+x)/2; if(!res[rk+1]) res[rk+1]=i; else if(!res[n-rk]) res[n-rk]=i; else return puts("0"),0; } int res=1; for(int i=1;i<=n/2;i++) (res*=2)%=MOD; printf("%d",res); return 0; }