読者です 読者をやめる 読者になる 読者になる

beet's soil

競プロのことなど

AtCoder Regular Contest 066

もう記憶にない

【C - Lining Up】

やるだけ。最初勘違いしてDに行ったのが悔やまれる
構築できるなら2^(N/2)、できないなら0

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
  ll n;cin>>n;
  ll a[n],b[n];
  memset(b,0,sizeof(b));
  for(ll i=0;i<n;i++) cin>>a[i],b[a[i]]++;
  ll ans=1LL,mod=1000000007;
  if(n%2){
    if(b[0]!=1) ans*=0;
    for(ll i=2;i<n;i+=2) if(b[i]==2) ans=(ans*2)%mod;else ans=0;
  }else{
    for(ll i=1;i<n;i+=2) if(b[i]==2) ans=(ans*2)%mod;else ans=0;
  }
  cout << ans%mod << endl;
  return 0;
}
【全体】

1815 -> 1842 (+27)
早解きセットだったのでもうちょっとあげたかったなあ