#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
void solve(){
int n; cin >> n;
int a[n + 2] = {};
for (int i = 1; i <= n; i++) cin >> a[i];
vector<int> r(n + 1, -1);
r[0] = 0;
for (int i = 1; i <= n; i++){
if (a[i] == 1 && a[i - 1] == 1){
if (r[i - 2] == -1) r[i] = -1;
else r[i] = r[i - 2] + 1;
}
if (a[i] != 1) r[i] = r[i - 1];
}
vector<int> s(n + 2, -1);
s[n + 1] = 0;
for (int i = n; i >= 1; i--){
if (a[i] == -1 && a[i + 1] == -1){
if (s[i + 2] == -1) s[i] = -1;
else s[i] = s[i + 2] + 1;
}
if (a[i] != -1) s[i] = s[i + 1];
}
int ans = 1e18;
for (int i = 1; i <= n + 1; i++){
if (s[i] != -1 && r[i - 1] != -1){
ans = min(ans, s[i] + r[i - 1]);
}
}
if (ans == 1e18) ans = -1;
cout << ans << endl;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int tc = 1;
// cin >> tc;
while (tc--){
solve();
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |