比赛 |
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;
}