题目描述
春天到了,小明想要从烟台开车去内蒙古大草原放松一下,这两地的距离是1422公里。小明的座驾每跑200公里必须加油。在烟台有加油站可以加满油,路上也有一些加油站。请你帮忙计算一下,小明能不能把车开到内蒙古再开回来。
输入
多组测试数据。
每组测试数据第一行为n,表示加油站的个数;接着是n行整数,表示加油站到烟台的距离,取值范围是0到1422,没有两个加油站在同一位置。
最后一组测试数据后以0结束。
输出
如果小明能完成这次旅行,输出POSSIBLE,不能完成输出IMPOSSIBLE 。
样例输入
2
0
900
8
1400
1200
1000
800
600
400
200
0
0
样例输出
IMPOSSIBLE
POSSIBLE
参考代码
#include<stdio.h>
int main()
{
int i,j,a[1422];
int n;
while(~scanf("%d",&n))
{
if(!n)break;
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if(a[i]>a[j])
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
a[n]=(1422-a[n-1])*2;
for (i=n-1;i;i--)
a[i]=a[i]-a[i-1];
a[0]+=200;
for (i=0;i<=n;i++)
if(a[i]>200)
break;
printf(i!=n+1?"IMPOSSIBLEn":"POSSIBLEn");
}
return 0;}
解析
暂无