集训队暑假旅行(模拟)

Description

 暑假就要到了,ACM集训队的同学们想从烟台开车到呼伦贝尔大草原去放松一下,这两地的距离是1422公里。大家让charon去租车行租辆车,结果她从租车行租了一辆老爷车,这辆车每跑200公里必须加油。在烟台他们有加油站可以加满油,路上也有一些加油站。请你帮忙计算一下,集训队的同学能不能把车从烟台开到呼伦贝尔再开回来。

 

 

Input

多组测试数据。

每组测试数据第一行为n,表示加油站的个数;接着是n行整数,表示加油站到烟台的距离,取值范围是0到1422,没有两个加油站在同一位置。

最后一组测试数据后以0结束。

Output

 

如果集训队能完成这次旅行,输出POSSIBLE,不能完成输出IMPOSSIBLE 。

Sample Input

2
0
900
8
1400
1200
1000
800
600
400
200
0
0

Sample Output

IMPOSSIBLE
POSSIBLE


 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 int my_comp(int a,int b)
 5 {
 6     if(a<b)
 7         return 1;
 8     else
 9         return 0;
10 }
11 int main()
12 {
13     int n,a[1500],i,j,flag1,k;
14     while(scanf("%d",&n)!=EOF)
15     {
16         if(n==0)
17             break;
18         for(i=0; i<n; i++)
19         {
20             scanf("%d",&a[i]);
21         }
22         sort(a,a+n,my_comp);///从小到大
23         k=0;
24         flag1=1;
25         for(i=0;i<n;i++)
26         {
27             if(a[i]-k>200)
28             {
29                 flag1=0;
30                 break;
31             }
32             else
33             {
34                 k=a[i];
35             }
37         }
38         if((1442-a[n-1])*2>200)
39         {
40             flag1=0;
41         }
42         if(flag1)
43             printf("POSSIBLE\n");
44         else
45             printf("IMPOSSIBLE\n");
46 
47     }
48     return 0;
49 }

 

posted @ 2018-05-20 21:09  王陸  阅读(436)  评论(0编辑  收藏  举报