YTU 2894: G--我要去内蒙古大草原

2894: G--我要去内蒙古大草原

时间限制: 1 Sec  内存限制: 128 MB
提交: 162  解决: 8

题目描述

春天到了,小明想要从烟台开车去内蒙古大草原放松一下,这两地的距离是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 <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
    int n;
    int jyz[100],s,i,t=1422;
    while(cin>>n&&n)
    {
        bool flag=true;
        for(i=0; i<n; ++i)scanf("%d",&jyz[i]);
        sort(jyz,jyz+n);
        if(jyz[0]!=0||1442-jyz[n-1]>100||n<8)
        {
            printf("IMPOSSIBLE
");
            continue;
        }
        for(i=n; i<2*n-1; ++i)jyz[i]=jyz[i-n]+1422;
        for(s=jyz[0],i=1; i<2*n; s=jyz[i++])
        {
            if(jyz[i]-jyz[i-1]>200)
            {
                flag=false;
                break;
            }
        }
        if(flag)printf("POSSIBLE
");
        else printf("IMPOSSIBLE
");
 
    }
    return 0;
}

原文地址:https://www.cnblogs.com/im0qianqian/p/5989616.html