比赛 |
20120709 |
评测结果 |
WWWAATTTTT |
题目名称 |
磁性链 |
最终得分 |
20 |
用户昵称 |
QhelDIV |
运行时间 |
5.001 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2012-07-09 11:52:29 |
显示代码纯文本
- #include <fstream>
- #include <cstdlib>
- #include <algorithm>
- using namespace std;
- ifstream fin("linka.in");
- ofstream fout("linka.out");
- int N,Q,A[200],list[200],Fare,Min=~0u>>1;
- bool used[200];
- void Initialize()
- {
- int i;
- fin>>N>>Q;
- for(i=1;i<=Q;i++)
- fin>>A[i];
- sort(A+1,A+Q+1);
- }
-
- void DFS(int deep)
- {
- int i,j,flag;
- if(deep==Q)
- {
- Min=min(Min,Fare);
- return;
- }
- if(Fare>=Min)
- return ;
- deep++;
- for(i=1;i<=Q;i++)
- if(!used[i])
- {
- j=1;flag=Fare;
- while(list[j]<A[i] && j<deep)
- j++;
- if(j==deep)
- Fare+=N-list[j-1]-1;
- else
- Fare+=list[j]-list[j-1]-1;
- list[deep]=A[i];
- used[i]=true;
- DFS(deep);
- used[i]=false;
- Fare=flag;
- }
- }
-
- int main()
- {
- Initialize();
-
- list[0]=1;
- DFS(0);
-
- fout<<Min<<endl;
-
- fin.close();
- fout.close();
- return 0;
- }