比赛 20101101 评测结果 AAAAATTTTT
题目名称 奇怪的监狱 最终得分 50
用户昵称 临轩听雨ゐ 运行时间 5.025 s
代码语言 C++ 内存使用 2.95 MiB
提交时间 2012-11-05 10:44:30
显示代码纯文本
#include <fstream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
using namespace std;
ifstream in("prison.in");
ofstream out("prison.out");
int p,q;
int ans=10000;
int b[101]={0};
bool a[101],c[1001];
int dfs(int dep,int tmp)
{
	if(dep==q)
	{
		if(tmp<ans) ans=tmp;
	}else
	{
		for(int i=1;i<=q;i++)
		{
			int t=0;
			if(a[i]==false)
			{
				for(int j=b[i]+1;j<=p;j++)
				{
					if(c[j]) break;
					if(!c[j]) t++;
				}
				for(int j=b[i]-1;j>=1;j--)
				{
					if(c[j]) break;
					if(!c[j]) t++;
				}
				c[b[i]]=true; a[i]=true;
				dfs(dep+1,tmp+t);
				c[b[i]]=false; a[i]=false;
			}
		}
	}
}

int main()
{
	in>>p>>q;
	for(int i=1;i<=q;i++)
		in>>b[i];
	dfs(0,0);
	out<<ans<<endl;
    return 0;
}