#include <bits/stdc++.h>
#define int long long
using namespace std;
const long long N = 2e5 + 5;
int a[N];
const int inf = 1e18;
int dp[N][2][2]; // min operations, i = index, j= a[i] == -1 or else , k= operation pending , till i a is sorted;
void solve()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
dp[i][0][0] = inf;
dp[i][0][1] = inf;
dp[i][1][0] = inf;
dp[i][1][1] = inf;
cin >> a[i];
}
if (n == 1)
{
cout << 0;
return;
}
if (n == 2)
{
if (is_sorted(a, a + n))
{
cout << 0;
return;
}
else
{
cout << -1;
return;
}
}
int i = 0;
while (i < n && a[i] == -1)
i++;
int count = 0;
int ans = 0;
bool ok = 0;
for (int i = 0; i <= n; i++)
{
if (a[i] == -1)
{
count++;
}
else
{
// cout << i << " " << a[i] << endl;
// cout << count << endl;/
if (count == 1)
{
cout << -1;
ok = 1;
return;
}
ans += (count + 1) / 2;
count = 0;
}
}
if (ok)
{
ans = 1e18;
}
i = n - 1;
while (i >= 0 && a[i] == 1)
i++;
count = 0;
int ans2 = 0;
for (int i = 0; i <= n; i++)
{
if (a[i] == 1)
{
count++;
}
else
{
if (count == 1 and ans >= 1e18)
{
cout << -1;
return;
}
if (count == 1)
{
ans2 = 1e18;
}
ans2 += (count + 1) / 2;
count = 0;
}
}
cout << min(ans, ans2) << endl;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
int t = 1;
// cin >> t;
for (int i = 1; i <= t; i++)
{
// cout << "Case #" << i << ':' << ' ';
solve();
cout << endl;
}
return 0;
}
| # | 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... |