Submission #1372213


Source Code Expand

#include<iostream>
#include<algorithm>

using namespace std;

#define fr(i,a,b) for(int i=a;i<b;++i)
////////////////////

int const MOD = 1e9 + 7;
int const N = 1e5 + 41;

int n, a[N];
int p[N][2];

void solve(){
	int ans = 1;
	cin >> n;
	fr(i, 1, n+1){
		cin >> a[i];
		int c = n - 1;
		int lp = 1 + (c - a[i]) / 2;
		int rp = n - lp + 1;
		if(p[lp][0] == 0){
			p[lp][0] = i;
		}else if(p[lp][1] == 0){
			p[lp][1] = i;
		}else{
			ans = 0;
		}
		if(p[rp][0] == 0){
			p[rp][0] = i;
		}else if(p[rp][1] == 0){
			p[rp][1] = i;
		}else{
			ans = 0;
		}
	}

	fr(i, 0, n/2) ans = ans * 2 % MOD;

	cout << ans << endl;
}

int main(){
#ifdef _DEBUG
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
#endif
	solve();

	return 0;
}

Submission Info

Submission Time
Task C - Lining Up
User Filyan
Language C++14 (GCC 5.4.1)
Score 300
Code Size 796 Byte
Status AC
Exec Time 39 ms
Memory 1408 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 14
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_invalid_01.txt, subtask_1_invalid_02.txt, subtask_1_max_01.txt, subtask_1_max_02.txt, subtask_1_max_valid_01.txt, subtask_1_max_valid_02.txt, subtask_1_min_valid_01.txt, subtask_1_rand_01.txt, subtask_1_rand_02.txt, subtask_1_valid_01.txt, subtask_1_valid_02.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_invalid_01.txt AC 33 ms 1280 KB
subtask_1_invalid_02.txt AC 7 ms 512 KB
subtask_1_max_01.txt AC 38 ms 1408 KB
subtask_1_max_02.txt AC 38 ms 1408 KB
subtask_1_max_valid_01.txt AC 38 ms 1408 KB
subtask_1_max_valid_02.txt AC 39 ms 1408 KB
subtask_1_min_valid_01.txt AC 1 ms 256 KB
subtask_1_rand_01.txt AC 23 ms 1024 KB
subtask_1_rand_02.txt AC 37 ms 1280 KB
subtask_1_valid_01.txt AC 20 ms 896 KB
subtask_1_valid_02.txt AC 8 ms 512 KB