Example

Input

6 3
1 0 0 1 0 1
1 3 2


Output

1
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
	int n,m;

	int bit[20];
	int run[20],use[20];
	int tmp[20];
	int flag;
	int ans,tans;
	bool fail;

	scanf("%d %d",&n,&m);
	for(int i=0; i<n; i++)
		scanf("%d",&bit[i]);
	for(int i=0; i<m; i++)
		scanf("%d",&run[i]);
	for(int i=0; i<n; i++)
		tmp[i]=bit[i];
	ans=10000;
	int k;
	for(int i=0; i<m; i++)
		use[i]=0;
	flag=0;
	k=0;
	tans=0;
	fail=true;
	for(int i=0; i<n; i++){
		if(k==m){
			fail=false;
			break;
		}
		fail=false;
		for(int j=i; j<n; j++)
			if(tmp[j]==flag){
				fail=true;
				tans+=j-i;
				swap(tmp[i],tmp[j]);
				use[k]++;
				if(use[k]==run[k])
					k++,flag^=1;
				break;
			}
		if(fail==false)
			break;

	}
	if(fail && tans<ans){
		ans=tans;
	}
	for(int i=0; i<m; i++)
		use[i]=0;
	for(int i=0; i<n; i++)
		tmp[i]=bit[i];
	flag=1;
	k=0;
	tans=0;
	fail=true;
	for(int i=0; i<n; i++){
		if(k==m){
			fail=false;
			break;
		}
		fail=false;
		for(int j=i; j<n; j++)
			if(tmp[j]==flag){
				fail=true;
				swap(tmp[i],tmp[j]);
				tans+=j-i;
				use[k]++;
				if(use[k]==run[k])
					k++,flag^=1;
				break;
			}
		if(fail==false)
			break;
	}
	if(fail && tans<ans)
		ans=tans;
	printf("%d\n",ans);
	return 0;
}