集训队暑假旅行(模拟)
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 }