Example

Input

6 3
1 0 0 1 0 1
1 3 2


Output

1
#include <bits/stdc++.h>
using namespace std;

vector<int> b,p;
int o=0,z=0;
int N,M;

int calc(int d){
    vector<int> v;
    for(int i=0;i<M;i++){
        for(int j=0;j<p[i];j++) v.push_back((i+d)%2);
    }

    int one = 0;
    int zero = 0;
    for(int i=0;i<N;i++){
        if(v[i]==0)  zero++;
        else one++;
    }
    if(one==o and zero==z){
        vector<int> s,t;
        for(int i=0;i<N;i++){
            if(b[i]==1 and v[i]==0){
                s.push_back(i);
            }else if(b[i]==0 and v[i]==1){
                t.push_back(i);
            }
        }
        int cnt = 0;
        for(int i=0;i<s.size();i++){
            cnt += abs(t[i]-s[i]);
        }
        return cnt;
    }
    return numeric_limits<int>::max();
}

int main(){
    int ans = numeric_limits<int>::max();
    cin >> N >> M;
    b.resize(N);
    p.resize(M);
    for(int i=0;i<N;i++) cin >> b[i];
    for(int i=0;i<M;i++) cin >> p[i];
    for(int i=0;i<N;i++) 
        if(b[i]==0) z++;
        else o++;

    // start from zero
    vector<int> v;
    for(int i=0;i<M;i++){
        for(int j=0;j<p[i];j++) v.push_back(i%2);
    }

    ans = min(calc(0),calc(1));
    cout << ans << endl;
}