Example

Input

6 3
1 0 0 1 0 1
1 3 2


Output

1
#include <cstdio>

#define min(X, Y) ((X)<(Y)?(X):(Y))
#define swap(X, Y) { int $=X;X=Y;Y=$; }

int a[20], b[20], c[20], n, m;

int func(int zero)
{
    for(int i=0,k=0;i<m;++i) {
        for(int j=0;j<c[i];++j) b[k++]=zero;
        zero^=1;
    }

    int res=0;
    for(int i=0;i<n;++i) if (a[i]!=b[i]) {
        for(int j=i+1;j<n;++j) if (a[i]==b[j]) {
            res+=j-i;
            for(int k=j;k>i;--k) swap(b[k], b[k-1]);
            break;
        }
    }
    return res;
}

int main()
{
    while (~scanf("%d%d", &n, &m)) {
        int o=0, z=0;
        for(int i=0;i<n;++i) {
            scanf("%d", a+i);
            a[i]?o++:z++;
        }
        int ot=0, zt=0;
        for(int i=0;i<m;++i) {
            scanf("%d", c+i);
            i%2?ot+=c[i]:(zt+=c[i]);
        }
        int res=1<<30;
        if (zt==z) res=func(0);
        if (ot==z) res=min(res, func(1));
        printf("%d\n", res);
    }
}