比赛 |
20121108 |
评测结果 |
AAAAAAAAAA |
题目名称 |
造房子的学问 |
最终得分 |
100 |
用户昵称 |
怡红公子 |
运行时间 |
0.012 s |
代码语言 |
C++ |
内存使用 |
10.93 MiB |
提交时间 |
2012-11-08 11:43:06 |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<fstream>
using namespace std;
ifstream fin("wood.in");
ofstream fout("wood.out");
int n,m,d,a[4];
struct Q{int t,l;}q[1000000];
bool v[32768]={0};
int main()
{
fin>>n>>m;
fin>>a[1]>>a[2]>>a[3];
fin>>d;
q[0].t=0;q[0].l=n;v[n]=1;
int l=0,r=0;
while(l<=r)
{
if(q[l].l==m) {fout<<q[l].t<<endl;return 0;}//system("pause");
if(q[l].l/2!=0&&!v[q[l].l/2]) {v[q[l].l/2]=1;q[++r].t=q[l].t+1;q[r].l=q[l].l/2;}
if(q[l].l-d!=0&&!v[q[l].l-d]) {v[q[l].l-d]=1;q[++r].t=q[l].t+1;q[r].l=q[l].l-d;}
if(d!=0&&!v[d]) {v[d]=1;q[++r].t=q[l].t+1;q[r].l=d;}
for(int i=1;i<=3;++i)
if(q[l].l+a[i]<=32767&&!v[q[l].l+a[i]])
{v[q[l].l+a[i]]=1;q[++r].t=q[l].t+1;q[r].l=q[l].l+a[i];}
l++;
}
fout<<"No solution."<<endl;
return 0; //system("pause");
}